我使用Express 4在本地开发了我的Nodejs Express应用程序,它在我的计算机上按预期工作。然后我将整个应用程序git推送到Openshift。当我尝试运行它时,Openshift返回“503 Service Unavailable”。如果我ssh到我的基本节点盒并执行“表达-V”它返回版本3.2.5。如果我在app-root / repo进入我的app文件夹并运行“express -V”,我会得到相同的版本3.2.5。
很明显,我的应用程序的node_modules中包含在git上传中的Express 4没有被使用。根据我的应用程序的要求,使用Express 4的解决方案是什么?
想法是 - 删除Openshift版本的Express 3,强制Openshift在我的应用程序区域使用我的Express 4,将Openshift的Express 3升级到Express 4.我无法弄清楚如何做这些并且我已经研究了这个。< / p>
答案 0 :(得分:6)
以下是解决问题的方法:
grep version ./node_modules/express/package.json
package.json
依赖关系scripts
部分,其中包含一个start
命令,只需node ./server.js
运行您的应用程序(server.js是您编写主应用程序开始的任何文件脚本)。您不需要express
命令行程序来启动快速服务器。它用于设置新的项目样板和其他辅助任务。server.js
(或同等)文件中:console.log(require("express/package").version);
答案 1 :(得分:3)
看看这个项目,了解如何将openshift与express4集成 这是一个简单的例子。
答案 2 :(得分:1)
试试这个
rhc ssh
cd app-root / repo
npm start
还要编辑./bin/www
var port = normalizePort(process.env.OPENSHIFT_NODEJS_PORT || '8080');
var ip = process.env.OPENSHIFT_NODEJS_IP;
if (typeof ip === "undefined") {
// Log errors on OpenShift but continue w/ 127.0.0.1 - this
// allows us to run/test the app locally.
console.warn('No OPENSHIFT_NODEJS_IP var, using 127.0.0.1');
ip = "127.0.0.1";
};
//app.set('ip', port);
app.set('port', port);
var server = http.createServer(app);
server.listen(port, ip);
server.on('error', onError);
server.on('listening', onListening);
答案 3 :(得分:1)
你可以按照步骤:
复制所有内容bin/www
并替换文件server.js
中的所有内容:
在server.js
更改部分内容:
这
`var port = normalizePort(process.env.PORT || '3000');`
到
var port = normalizePort(process.env.OPENSHIFT_NODEJS_PORT || '3000');
添加行:
var ip = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';
这
server.listen(port);
到
server.listen(port, ip);
这
"scripts": {
"start": "node bin/www"
},
到
"scripts": {
"start": "node server.js"
},
添加行:
"main": "server.js",
将npm install --save module-name
用于npm install
使用内容创建文件.gitignore:
node_modules
在本地运行node server.js
上启动服务器,地址为localhost:3000
上传到openshift:
git add .
git commit -m "First update new server version"
git push
浏览器:domain-appname.rhcloud.com