0

依存関係のあるnode.jsアプリがあります

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "dependencies": {
    "express": ">=2.2.0",
    "jade": "*",
    "stylus": "*",
    "mongodb": ">= 0.9.6-7"
  }

}

それは私のローカルホストで正常に動作しています

ノードアプリをherokuでホストしていると、次のエラーが発生します。

TypeError:Object#には、MemoryStore.generate(/ app / node_modules / express / node_modules /)のObject.uid(/app/node_modules/express/node_modules/connect/lib/utils.js:121:17)にメソッド'randomBytes'がありませんconnect / lib / middleware / session.js:204:27)at generate(/app/node_modules/express/node_modules/connect/lib/middleware/session.js:288:13)at Object.session [as handle](/ app / node_modules / express / node_modules / connect / lib / middleware / session.js:297:7)at next(/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)at Object.cookieParser [ハンドルとして](/ app / node_modules / express / node_modules / connect / lib / middleware / cookieParser.js:60:5)次の(/app/node_modules/express/node_modules/connect/lib/proto.js:190: 15)Object.expressInit [ハンドルとして](/ app / node_modules / express / lib / middleware.js:31:5)次に(/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)Object.query [ハンドルとして](/ app / node_modules / express / node_modules / connect / lib / Middleware / query.js:44:5)

行を1つずつ削除して、削除した場所に到達しようとしました

app.use(express.session({ secret:'yodawgyo' }));

アプリは「HelloWorld」応答を返していました。以下の私の完全なコードを参照してください。

var express = require('express');
var crypto = require('crypto');//for gravatar

var passport = require('passport')
  , OpenIDStrategy = require('passport-openid').Strategy
  , GoogleStrategy = require('passport-google').Strategy
  , AOLStrategy = require('passport-aol').Strategy
  , YahooStrategy = require('passport-yahoo').Strategy;;



passport.serializeUser(function(user, done) { 
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});

var app = module.exports = express();

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.cookieParser());


//NO ISSUES WITH HEROKU IF I COMMENTED BELOW LINE   
  app.use(express.session({ secret:'yodawgyo' }));


  app.use(app.router);

});

app.get('/', function(req, res) {
  res.send("Hello World");
});

app.listen(process.env.PORT || 5000, function() {
  console.log("listening on 5000");
});

私を助けてください。

4

1 に答える 1

7

私は同じ問題を抱えていました。これは、「engines」ブロックをpackage.jsonに追加することで解決されました。これは、Herokuに特定のバージョンのノードとnpmを使用するように指示します。ほとんどの場合、Herokuのデフォルトの0.4.7よりもはるかに新しいバージョンのノードを使用しています。

https://devcenter.heroku.com/articles/nodejs-support#versionsを参照してください

于 2012-12-13T17:10:33.013 に答える