如何让Openshift使用Express 4,而不是安装Express 3?

时间:2015-02-26 05:47:14

标签: node.js express openshift

我使用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>

4 个答案:

答案 0 :(得分:6)

以下是解决问题的方法:

  • ssh进入你的墨盒
  • 进入app-root / repo目录
  • 运行grep version ./node_modules/express/package.json
  • 您应该会看到基于package.json依赖关系
  • 的版本
  • 验证你的package.json有一个scripts部分,其中包含一个start命令,只需node ./server.js运行您的应用程序(server.js是您编写主应用程序开始的任何文件脚本)。您不需要express命令行程序来启动快速服务器。它用于设置新的项目样板和其他辅助任务。
  • 要查看在您的应用中运行的快速版本,您可以将此代码添加到server.js(或同等)文件中:console.log(require("express/package").version);

答案 1 :(得分:3)

看看这个项目,了解如何将openshift与express4集成 这是一个简单的例子。

https://github.com/master-atul/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)

你可以按照步骤:

  1. 复制所有内容bin/www并替换文件server.js中的所有内容:

  2. server.js更改部分内容:

  3. `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);
    
    1. 向package.json添加更多内容
    2. "scripts": {
          "start": "node bin/www"
      },
      

      "scripts": {
          "start": "node server.js"
      }, 
      

      添加行:

      "main": "server.js",
      
      1. npm install --save module-name用于npm install

      2. 使用内容创建文件.gitignore:

        node_modules

      3. 在本地运行node server.js上启动服务器,地址为localhost:3000

      4. 上传到openshift:

        git add . git commit -m "First update new server version" git push

      5. 浏览器:domain-appname.rhcloud.com