gpt4 book ai didi

javascript - 网站在本地运行/不在Openshift上运行(将本地,全局npm软件包版本与服务器,全局npm软件包版本同步)

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:54 25 4
gpt4 key购买 nike

我正在使用Angular创建一个论坛-它与Node / Mongo接口,因此需要执行大量请求才能用所需的数据填充页面。一切都在本地正常运行,但是当我上传到Openshift时...该网站似乎有很多错误,似乎执行的请求(如果不是全部)或请求的一半以上使论坛发挥作用。

我正在使用称为yeomanMEAN angular-fullstack堆栈。如果您具有yeoman,则可以使用yo angular-fullstack创建种子。

我必须在该种子中进行更改以使其上载到openshift的唯一事情是:

server.js

...

// Set default node environment to development
process.env.NODE_ENV = process.env.NODE_ENV || 'development';

...




...

// Set default node environment to development
process.env.NODE_ENV = process.env.NODE_ENV || 'production';

...


上一行在lib / config / express.js中引用了以下代码:

if ('development' === env) {
app.use(require('connect-livereload')());

// Disable caching of scripts for easier testing
app.use(function noCache(req, res, next) {
if (req.url.indexOf('/scripts/') === 0) {
res.header('Cache-Control', 'no-cache, no-store, must-revalidate');
res.header('Pragma', 'no-cache');
res.header('Expires', 0);
}
next();
});

app.use(express.static(path.join(config.root, '.tmp')));
app.use(express.static(path.join(config.root, 'app')));
app.set('views', config.root + '/app/views');
}

if ('production' === env) {
app.use(compression());
app.use(errorHandler());
app.use(favicon(path.join(config.root, 'public', 'favicon.ico')));
app.use(express.static(path.join(config.root, 'public')));
app.set('views', config.root + '/views');
}

...

// Error handler - has to be last
if ('development' === app.get('env')) {
app.use(errorHandler());
}


因此,如果您注意到该 production代码段有什么问题,那就告诉我-这就是正在运行的代码。

另外,需要更改 Mongo URI以便与我在Openshift上设置的MongoDB盒配合使用:

mongo: {
uri: process.env.MONGOLAB_URI ||
process.env.MONGOHQ_URL ||
process.env.OPENSHIFT_MONGODB_DB_URL+process.env.OPENSHIFT_APP_NAME ||
'mongodb://whateveritwas'
}




mongo: {
uri: process.env.MONGOLAB_URI ||
process.env.MONGOHQ_URL ||
process.env.OPENSHIFT_MONGODB_DB_URL+process.env.OPENSHIFT_APP_NAME ||
'mongodb://admin:xxxxx@127.10.13.X:27017/hackabox' //the X's are to protect me
}


最初,要使其上传到Openshift,必须在项目文件夹中运行 yo angular-fullstack:openshift,但是我已经这样做了,所以现在要做的就是在Openshift上更新代码了:


进入控制台中的项目文件夹,然后键入 grunt build(这将创建 dist文件夹)
转到 dist文件夹,将所有内容添加到 git并运行 git push


之后,我可以转到Openshift URL并查看该站点。

现在真正发生的是(我正在关注的)-是当您转到可以查看该帖子的页面时(它的内容,它的作者,它的评论)-您可以添加评论,并且它们最初会显示是因为有关角度工作原理的信息...但是当我离开并返回时...此代码似乎未按预期执行:

$scope.loadpost = function() {
$http.get('/api/posts/'+$routeParams.id).success(function (data) {
$scope.post = data;
$scope.comments = $scope.post.comments;
console.log('this is scope comments ' + $scope.comments);
if($scope.comments[0] !== undefined) {
$scope.commentstring.empty = '';
}
});
};


出于测试目的...我在后控制器的顶部调用它,如下所示:

$scope.loadpost();


页面加载时,我也使用 ng-init调用它,如下所示:

<div ng-init="loadpost()">


这是我要详细说明问题的地方

我知道这是多余的...但是重点是...页面加载时永远不会调用该函数...并且从数据库获取所需的所有帖子内容都不会到达,因为请求永远不会发生-我可以看到控制台中什么也没发生-您也可以在页面的“论坛”部分- http://hackabox-eamonbenproject.rhcloud.com/forum中查看我在说什么。要发布信息,您必须先以用户身份注册...然后您可以通过以下方式查看我在说什么:进入论坛,单击其中一个信息...发表评论...,然后浏览并回来...您不必发表评论,您将看不到任何内容...但是它将帮助您看到问题,因为创建评论时,应该会发生 PUT请求这会更新帖子,但也永远不会发生...以及一堆也没有被调用的 GET请求。另外,另一件事,我注意到(至少一次)...如果我在论坛上做某事...然后导航到“设置”页面,则有时徽标消失了...

我开始认为运行 grunt build时进行的缩小过程正在弄乱代码...因此,当将其加载到openshift时,它会变得非常有故障...但这只是预感-我猜测是为了检验我的理论,我想知道是否有上传而无需缩小的Openshift?

谢谢!

更新

正如Pogrindis和我今天早上所讨论的那样,当应该发生请求时,节点在openshift上登录时出错。它在节点日志中说这是Express错误...并且我们意识到openshift上npm的全局版本正在使用3.2.5,而我正在使用的种子使用express v4.2.0(这就是我所使用的)全球,本地)。我正在将本地的全球快车npm降级到3.2.5,以查看是否可以解决问题...但是向Pogrindis +1以便向我介绍节点版本管理器...以及必须同步在Openshift上全局安装的任何npm软件包的版本!将保持所有人的状态,以确保此问题得以解决!

最佳答案

很难回答的问题。有很多要看的。

版本控制

版本中的节点很大,您可能有一个错误的版本,并且可能会引起粉丝的注意。

我想到了一个特殊的VERSION Saving github主题。

如果这不是问题,则仍然需要记住,它不是包含版本控制的强类型lang。

每种情况都不同。

https://github.com/npm/npm/issues/3417

此问题“ FIX”将杀死使用先前(次要)版本的许多用户。
您需要具体说明版本。 (我以此为例)

Node会很好地解决很多版本问题,除非您指定版本,否则它将获得最新版本。

因此,除非在软件包中指定了版本,否则在本地计算机(3个月的辛勤劳动)上工作毫无意义。

您的服务器将仅具有最新版本。

从问题开始..只能是版本问题。

关于javascript - 网站在本地运行/不在Openshift上运行(将本地,全局npm软件包版本与服务器,全局npm软件包版本同步),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24835395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com