3

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

Express 500 TypeError: Object # has no method 'randomBytes' 在 Object.uid(/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/utils.js:122:17)在 MemoryStore.generate vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/middleware/session.js:203:27)在生成(/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) 在下一个 (/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app_modules/node_modules/ express/node_modules/connect/lib/proto.js:190:15) 在对象。cookieParser [作为句柄] (/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5) 在下一个 (/var /vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/proto.js:190:15) 在 Object.methodOverride [作为句柄] (/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/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/ /connect/lib/middleware/multipart.js:62:61)61)61)5) 在下一个 (/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/proto.js:190:15) 在 Object.methodOverride [作为句柄] (/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/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/proto.js:190:15) 在多部分 (/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f3880b44b144d/ app/node_modules/express/node_modules/connect/lib/middleware/multipart.js:62:61)5) 在下一个 (/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/proto.js:190:15) 在 Object.methodOverride [作为句柄] (/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/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/proto.js:190:15) 在多部分 (/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f3880b44b144d/ app/node_modules/express/node_modules/connect/lib/middleware/multipart.js:62:61)methodOverride [作为句柄] (/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/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)methodOverride [作为句柄] (/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/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)15) 在多部分 (/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/middleware/multipart.js:62:61)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'));
    });
4

2 回答 2

2

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

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

于 2012-10-05T19:25:29.627 回答
2

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

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

原因是默认的 nodejs 版本对于我的应用来说太旧了,

只是vmc delete app首先,

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

于 2012-10-27T13:47:20.447 回答