无法读取finalHandler节点模块中未定义的属性'_header'

我似乎无法find解决我的问题。 我试图启动我的nodeJS / expressJS应用程序,但在“npm start”时收到错误。

错误和堆栈跟踪:

/Users/jmccreary/Documents/NewHireSite/node_modules/finalhandler/index.js:94 if (!err && res._header) { ^ TypeError: Cannot read property '_header' of undefined at /Users/jmccreary/Documents/NewHireSite/node_modules/finalhandler/index.js:94:20 at /Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/router/index.js:635:15 at next (/Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/router/index.js:210:14) at Function.handle (/Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/router/index.js:174:3) at Function.handle (/Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/application.js:174:10) at app (/Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/express.js:38:9) at Object.<anonymous> (/Users/jmccreary/Documents/NewHireSite/app.js:101:25) at Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.require (module.js:498:17) at require (internal/module.js:20:19) at Object.<anonymous> (/Users/jmccreary/Documents/NewHireSite/bin/www:7:11) at Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.runMain (module.js:605:10) at run (bootstrap_node.js:427:7) 

有效代码(在node_modules / finalhandler / index.js中):
(注意:我自己添加了console.logs,它们不是模块的一部分)

  function finalhandler (req, res, options) { var opts = options || {} console.log("The req is: ", req); console.log("The res is: ", res); // get environment var env = opts.env || process.env.NODE_ENV || 'development' // get error callback var onerror = opts.onerror return function (err) { var headers var msg var status // ignore 404 on in-flight response if (!err && res._header) { debug('cannot 404 after headers sent') return } ... 

从我的console.log()如图所示,输出如下:

  The req is: Authenticator { _key: 'passport', _strategies: { session: SessionStrategy { name: 'session' } }, _serializers: [], _deserializers: [], _infoTransformers: [], _framework: { initialize: [Function: initialize], authenticate: [Function: authenticate] }, _userProperty: 'user', Authenticator: [Function: Authenticator], Passport: [Function: Authenticator], Strategy: { [Function: Strategy] Strategy: [Circular] }, strategies: { SessionStrategy: { [Function: SessionStrategy] super_: [Object] } } } The res is: undefined 

编辑 :这是,我相信,是调用错误的代码(从node_modules / express / lib / application.js):

  /** * Dispatch a req, res pair into the application. Starts pipeline processing. * * If no callback is provided, then default error handlers will respond * in the event of an error bubbling through the stack. * * @private */ app.handle = function handle(req, res, callback) { var router = this._router; // final handler var done = callback || finalhandler(req, res, { env: this.get('env'), onerror: logerror.bind(this) }); // no routes if (!router) { debug('no routes defined on app'); done(); return; } router.handle(req, res, done); }; 

我的package.json文件(使用Express 4)如下所示:

 { "name": "newhiresite", "version": "0.1.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "body-parser": "~1.17.1", "connect-flash": "^0.1.1", "cookie-parser": "~1.4.3", "debug": "~2.6.3", "express": "~4.15.2", "express-session": "^1.15.3", "express-validator": "^3.2.0", "fs": "0.0.1-security", "mongodb": "^2.2.25", "mongoose": "^4.10.1", "morgan": "~1.8.1", "node-sass-middleware": "0.9.8", "passport": "~0.3.2", "passport-local": "~1.0.0", "pug": "~2.0.0-rc.1", "serve-favicon": "~2.4.2" } } 

我能够运行教程的源代码,它和我的应用程序具有相同的模块,几乎相同(npm start命令中的www / bin文件除外)。 我尝试删除其他模块,并在我的app.js文件中移动的东西无济于事。

任何指针或帮助将不胜感激。 谢谢!

       

网上收集的解决方案 "无法读取finalHandler节点模块中未定义的属性'_header'"

我有同样的错误。 以下解决了我的问题,也许这对你呢? 我有这样的代码:

 var express = require('express')(); var app = express(); app.listen(3000, function () { console.log('Example app listening at http://%s:%s'); }); 

它有一个()太多了。 删除它解决了这个问题:

 var express = require('express');