我遇到一个问题,我在此应用程序上尝试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路线,我相信问题正在发生:
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;
答案 0 :(得分:19)
我刚才有类似的错误消息,并设法通过更改来解决问题:
res.status(statusCode);
为:
if (statusCode >= 100 && statusCode < 600)
res.status(statusCode);
else
res.status(500);
或只是:
res.status(statusCode >= 100 && statusCode < 600 ? err.code : 500);
即。确保你没有尝试在某个地方设置invalid HTTP status code。
这可能是问题所在,但您似乎意外地重复了app.js
代码而不是粘贴问题中的edit.js
代码。
答案 1 :(得分:3)
当我们在表单保存上有验证错误并且我们使用res.redirect而不是res.render方法时,也会发生这种情况
例如 -
请使用
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id='app' />
而不是(节点的错误陈述)
res.render('users/add', {
countries: countries
});
答案 2 :(得分:0)
对我来说,问题是我还没有创建上传目录,但返回错误。可能是由于Linux上的权限问题,您应该考虑首先创建./upload
目录。
答案 3 :(得分:0)
我遇到了同样的问题,我使用以下方法解决了:
res.send('0')
代替
res.send(0)