首页 文章

Node.js应用程序,Express和Cloud Foundry

提问于
浏览
3

我正在使用开箱即用的expressjs应用程序,我正在使用节点0.8.2 . 在本地运行很好,但当我推送到Cloud Foundry时,我收到以下错误,我不知道从哪里开始调试 . 我假设这是由配置问题或依赖性问题引起的,但我不知道该怎么做 .

在ObjectStore.generate(/ var)的Object.uid(/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/utils.js:122:17) Express 500 TypeError: Object # has no method 'randomBytes' /vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/middleware/session.js:203:27)at generate(/ var / vcap / data / dea / apps /dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/middleware/session.js:281:13)在Object.session [作为句柄](/ var / vcap / data / dea / apps / dwgapp1) -0-690016dc6c7142f385b44b144d3d380e / app / node_modules / express / node_modules / connect / lib / middleware / session.js:290:7)at next(/ var / vcap / data / dea / apps / dwgapp1-0-690016dc6c7142f385b44b144d3d380e / app / node_modules /express/node_modules/connect/lib/proto.js:190:15)在Object.cookieParser [作为句柄](/ var / vcap / data / dea / apps / dwgapp1-0-690016dc6c7142f385b44b144d3d380e / app / node_modules / express / node_modules /connect/lib/middleware/cookieParser.js:60:5)at next(/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)at Object.methodOverride [as handle](/ var /vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:37:5)下一步(/ var / vcap / data / dea / apps atpart的/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/proto:js:190:15)(/ var / vcap / data / dea / apps / dwgapp1-0-690016dc6c7142f385b44b144d3d380e / app / node_modules /express/node_modules/connect/lib/middleware/multipart.js:62:61)

var express = require('express')
       , routes = require('./routes')
       , user = require('./routes/user')
       , http = require('http')
       , path = require('path');

    var app = express();

    app.configure(function(){
       app.set('port', process.env.VCAP_APP_PORT || 3000);
       app.set('views', __dirname + '/views');
       app.set('view engine', 'ejs');
       app.use(express.favicon());
       app.use(express.logger('dev'));
       app.use(express.bodyParser());
       app.use(express.methodOverride());
       app.use(express.cookieParser('your secret here'));
       app.use(express.session());
       app.use(app.router);
       app.use(require('stylus').middleware(__dirname + '/public'));
       app.use(express.static(path.join(__dirname, 'public')));
    });

    app.configure('development', function(){
       app.use(express.errorHandler());
    });

    app.get('/', routes.index);
    app.get('/users', user.list);

    http.createServer(app).listen(app.get('port'), function(){
       console.log("Express server listening on port " + app.get('port'));
    });

2 回答

  • 2

    看来这个问题是由连接引起的,是express的依赖 . 我最初在节点0.8.8上使用快速运行创建了我的应用程序,而CF使用的是0.8.2 . 即使我在本地似乎没有什么不同,当我部署到Cloud Foundry时,我收到了这个错误 .

    我创建了一个全新的应用程序,从一开始就运行Node 0.8.2 . 这似乎解决了这个问题 .

  • 2

    您可以使用 vmc logs app-name ,显示错误消息 .

    我和你遇到了同样的问题 .

    原因是我的应用程序的默认nodejs版本太旧了,

    只是 vmc delete app 首先,

    用最新的nodejs创建一个新的, vmc push app-name --runtime node08

相关问题