我遇到一个问题,在此应用程序上尝试POST请求时收到以下错误代码(请记住我是初学者node.js / js程序员):
错误:
[20:22:28] [nodemon] starting `node app.js` Running server on 3000 Mon, 27 Jun 2016 19:22:31 GMT express deprecated res.send(status, body): Use res.status(status).send(body) instead at routes\edit.js:35:25 c:\Users\Matt\WebstormProjects\ghs_restart\node_modules\mongodb\lib\utils.js:98 process.nextTick(function() { throw err; }); ^ RangeError: Invalid status code: 0 at ServerResponse.writeHead (_http_server.js:192:11) at ServerResponse._implicitHeader (_http_server.js:157:8) at ServerResponse.OutgoingMessage.end (_http_outgoing.js:573:10) at ServerResponse.send (c:\Users\Matt\WebstormProjects\ghs_restart\node_modules\express\lib\response.js:204:10) at ServerResponse.json (c:\Users\Matt\WebstormProjects\ghs_restart\node_modules\express\lib\response.js:249:15) at ServerResponse.send (c:\Users\Matt\WebstormProjects\ghs_restart\node_modules\express\lib\response.js:151:21) at c:\Users\Matt\WebstormProjects\ghs_restart\routes\edit.js:35:25 at c:\Users\Matt\WebstormProjects\ghs_restart\node_modules\mongodb\lib\collection.js:416:18 at handleCallback (c:\Users\Matt\WebstormProjects\ghs_restart\node_modules\mongodb\lib\utils.js:96:12) at c:\Users\Matt\WebstormProjects\ghs_restart\node_modules\mongodb\lib\collection.js:705:5
app.js:
var express = require('express'); var router = express.Router(); var app = express(); var bodyParser = require('body-parser'); app.use( bodyParser.json() ); // to support JSON-encoded bodies app.use(bodyParser.urlencoded({ // to support URL-encoded bodies extended: true })); var path = require('path'); var port = process.env.PORT || 3000; var index = require('./routes/index'); var edit = require('./routes/edit'); app.use('/', index); app.use('/edit', edit); app.use(express.static(path.join(__dirname, 'public'))); app.set('view engine', 'jade'); app.set('views', 'views'); app.listen(port, function (err) { console.log("Running server on", port); }); module.exports = index;
以下是我的edit.js路由,我认为是发生问题的地方:
我刚才有一个类似的错误消息,并设法通过更改解决了该问题:
res.status(statusCode);
至:
if (statusCode >= 100 && statusCode < 600) res.status(statusCode); else res.status(500);
要不就:
res.status(statusCode >= 100 && statusCode < 600 ? err.code : 500);
也就是说,请确保您未尝试在某处设置无效的HTTP状态代码。
这可能是问题所在,但看起来您不小心复制了app.js代码,而不是将edit.js代码粘贴到问题中。
app.js
edit.js