2012-09-29 76 views
3

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

快递 500类型错误:对象#没有方法 'randomBytes' 在Object.uid(在/ var/VCAP /数据/ DEA /应用/ dwgapp1-0-690016dc6c7142f385b44b144d3d380e /应用程序/ node_modules /表达/ node_modules/(/ var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/middleware/session/lib/utils.js:122:17) at MemoryStore.generate .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 [as handle](/ var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/ex (/ var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib)下载/ node_modules/connect/lib/middleware/session.js:290:7) /prote.js:190:15) at Object.cookieParser [as handle](/ 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 [as handle](/var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:37:5) at下一步(/ var/vcap/data/dea/apps/dwgapp1-0-690016dc6c7142f385b44b144d3d380e/app/node_modules/express/node_modules/conn ect/lib/proto.js:190:15) at multipart(/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')); 
    }); 
+0

检查是否有在版本的任何不匹配的节点和快递中使用的云基地 – vinayr

+0

我已经准备好检查... CF运行0.8.2,我运行0.8.2,我跑了vmc udate --runtime = node08 – user699242

+0

问题,但如果我最初推使用0.8.8的应用程序是否会使用不同版本的快递? – user699242

回答

2

看来这个问题是由connect,express的依赖造成的。我最初使用运行在节点0.8.8上的express创建了我的应用程序,并且CF使用了0.8.2。尽管我在本地似乎没有什么区别,但是当我部署到Cloud Foundry时,我却遇到了这个错误。

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

2

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

我遇到了同样的问题。

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

只是vmc delete app第一,

新建一个与最新的NodeJS,vmc push app-name --runtime node08

相关问题