2016-06-27 41 views
7

我有尝试在该应用中POST请求时,在那里我得到了下面的错误代码的问题(铭记我是一个初学者的node.js/JS编程):的RangeError:无效的状态码:0

错误:

[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

我认为这是回调中的错误,但我不确定。 – Matt

+0

你可以用'edit.js'的好的代码示例更新你的问题吗?好像你粘贴了'app.js'。 –

回答

11

我刚才也有类似的错误信息和管理的改变来解决问题:

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代码的问题。

+0

非常感谢!为我节省了很多时间:-) –

+0

解决了我的问题呢!谢谢! – JackLametta

+0

当使用statusCode时,它抛出ReferenceError –

1

,当我们有验证错误的形式保存和我们使用res.redirect代替res.render方法

的示例 -

请使用

res.render('users/add', { 
    countries: countries 
}); 

,而不是这种情况也发生(这是节点的错误陈述)

res.redirect('/users/add', { 
    countries: countries 
});