【问题标题】:RangeError: Invalid status code: 0RangeError:无效的状态代码:0
【发布时间】:2016-10-29 22:18:11
【问题描述】:

我遇到了一个问题,在此应用程序上尝试 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;

【问题讨论】:

  • 我认为这是回调中的错误,但我不确定。
  • 您能用edit.js 的优秀代码示例更新您的问题吗?好像你在里面粘贴了app.js

标签: javascript node.js mongodb express webstorm


【解决方案1】:

我遇到了同样的问题,我通过使用解决了这个问题:

res.send('0')

而不是

res.send(0)

【讨论】:

    【解决方案2】:

    对我来说,问题是我没有创建上传目录,它返回了错误。可能你应该考虑先创建你的./upload目录,因为linux上的权限问题。

    【讨论】:

      【解决方案3】:

      当我们在表单保存时出现验证错误并且我们使用 res.redirect 而不是 res.render 方法时也会发生这种情况

      例如-

      请使用

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

      而不是(节点的说法错误)

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

      【讨论】:

        【解决方案4】:

        我刚才有类似的错误信息,并设法通过更改来解决问题:

        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 代码。

        【讨论】:

        • 非常感谢!节省了我很多时间:-)
        • 使用statusCode时抛出ReferenceError
        • @DivyaGalla statusCode 必须首先定义。 IE。 var statusCode = 200; 使用适合您情况的任何代码。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-11
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 2017-01-22
        • 1970-01-01
        相关资源
        最近更新 更多