Jam*_*ary 4 node.js node-modules
我似乎无法找到解决我的问题的方法。我正在尝试启动我的 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)
Run Code Online (Sandbox Code Playgroud)
违规代码(在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
}
...
Run Code Online (Sandbox Code Playgroud)
从我的 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
Run Code Online (Sandbox Code Playgroud)
编辑:我相信,这是调用错误的代码(来自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);
};
Run Code Online (Sandbox Code Playgroud)
我的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"
}
}
Run Code Online (Sandbox Code Playgroud)
我能够很好地运行教程的源代码,并且它具有与我的应用程序相同的模块,几乎相同(除了 npm start 命令上的 www/bin 文件)。我尝试删除其他模块并移动 app.js 文件中的内容,但无济于事。
任何指示或帮助将不胜感激。谢谢你!
我有同样的错误。以下内容为我解决了问题,也许也适合您?我有这个代码:
var express = require('express')();
var app = express();
app.listen(3000, function () {
console.log('Example app listening at http://%s:%s');
});
Run Code Online (Sandbox Code Playgroud)
它的 () 太多了。删除它解决了问题:
var express = require('express');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4359 次 |
| 最近记录: |