Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Openshift上运行keystone node.js应用程序_Node.js_Openshift_Keystonejs - Fatal编程技术网

无法在Openshift上运行keystone node.js应用程序

无法在Openshift上运行keystone node.js应用程序,node.js,openshift,keystonejs,Node.js,Openshift,Keystonejs,编辑2-最终注释 下面的解决方案对我很有效,但是您仍然需要手动指定mongo连接凭据,如上图所示,应用程序才能正确运行,否则将出现mongo auth错误 编辑1-添加完整的keystone.js keystone.js 我正在尝试构建我的第一个Keystone.js,它在我的机器上本地运行良好 现在,我正试图把我的网站推到Openshift上,但失败得很惨 我已通过将以下内容添加到keystone.js,让mongo连接: var mongoDbConnectionString = proc

编辑2-最终注释

下面的解决方案对我很有效,但是您仍然需要手动指定mongo连接凭据,如上图所示,应用程序才能正确运行,否则将出现mongo auth错误

编辑1-添加完整的keystone.js

keystone.js

我正在尝试构建我的第一个Keystone.js,它在我的机器上本地运行良好

现在,我正试图把我的网站推到Openshift上,但失败得很惨

我已通过将以下内容添加到keystone.js,让mongo连接:

var mongoDbConnectionString =  process.env.OPENSHIFT_MONGODB_DB_URL || 'mongodb://localhost/*********';
但是,我无法让它正确运行,因为它似乎在绑定到ip和端口时出现问题,我正在Openshift上为它提供数据,我使用以下代码:

var host = process.env.OPENSHIFT_NODEJS_IP || process.env.OPENSHIFT_INTERNAL_IP || "127.0.0.1";

var port = process.env.OPENSHIFT_NODEJS_PORT  || process.env.OPENSHIFT_INTERNAL_PORT || 3000;
结合:

keystone.init({

'name': '*********',
'brand': '*********',

'less': 'public',
'static': 'public',
'favicon': 'public/favicon.ico',
'views': 'templates/views',
'view engine': 'jade',

'emails': 'templates/emails',
'mongo': mongoDbConnectionString,
'host': host,
'port':  port,
'auto update': true,
'session': true,
'auth': true,
'user model': 'User',
'cookie secret': '*********'


});
但我一直得到:

==> app-root/logs/nodejs.log <==
Error: listen EACCES
at errnoException (net.js:901:11)
at Server._listen2 (net.js:1020:19)
at listen (net.js:1061:10)
at Server.listen (net.js:1135:5)
....

with 'node keystone.js'
DEBUG: Sending SIGTERM to child...

==>app root/logs/nodejs.log编辑1-根据@GarethJeanne的评论忽略server.js代码

如果您的入口点是
keystone.js
,并且您根本没有使用
server.js
(这会使我以前的答案静音),那么您需要确保您使用的是keystone
0.3.3
或更新版本

该问题在中得到了解决,于2月28日合并,并首次包含在3月8日发布的版本
0.3.3

我不认为这是一个关键问题。显然,您没有使用Keystone的开箱即用初始化和启动,因此Keystone负责创建或初始化您的Express应用程序

由于您没有共享所有代码(例如,
self.initializeServer()
),我假设您正确设置了Express并将其连接到Keystone应用程序实例

我同样会假设
self.app
是Express的一个实例

从您提交的代码中,我看到的唯一问题是,您正在将
'self.port'
'self.ipaddress'
传递到
self.app.listen()
,每个参数用单引号括起来

这肯定会导致
listeneacces
错误

尝试删除
self.app.listen()
调用中围绕
'self.port'
'self.ipaddress'
的单引号

self.start=函数(){ //在特定接口(和端口)上启动应用程序。 self.app.listen(self.port、self.ipaddress、function()){ console.log(“%s:节点服务器已在%s上启动:%d…”, 日期(Date.now()),self.ipaddress,self.port); }); };
我不能保证你的应用程序的其余部分可以正常工作,但至少应该可以消除
listen EACCES
错误。

Hi-JME,谢谢你的回复,上面的引用是一个输入错误,我已经用server.js和keystone.js的完整版本更新了问题,让你看看。@GarethJeanne,我有点困惑。你的应用程序(
keystone.js
server.js
)的入口点是什么?根据您问题中的错误日志,我将假设
keystone.js
。如果是这样的话,你能告诉我你使用的是什么版本的Keystone吗?很抱歉,brain dead Dreat post,我只使用Keystone.js,这是入口点。所以请忽略server.js,我已经更新了上面的问题。就版本而言,我使用的是keystone-utils@0.1.13和发电机-keystone@0.3.0@GarethJeanne,实际上我是在询问您的Keystone版本,而不是生成器,但我假设您使用的是
0.3.2
或更旧版本。我已经根据这些新信息更新了我的答案。是的,这已经对它进行了排序,尽管更新到0.3.3的过程有点痛苦,对于openshift上的远程实例来说足够简单,因为我刚刚在我的package.json中指定了它,但是在获取本地可用的所有模块时遇到了问题。
==> app-root/logs/nodejs.log <==
Error: listen EACCES
at errnoException (net.js:901:11)
at Server._listen2 (net.js:1020:19)
at listen (net.js:1061:10)
at Server.listen (net.js:1135:5)
....

with 'node keystone.js'
DEBUG: Sending SIGTERM to child...