RangeError: Неверный код состояния: 0

У меня возникла проблема, когда я получаю следующий код ошибки при попытке запроса 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;
 Jérôme28 июн. 2016 г., 14:22
Можете ли вы обновить свой вопрос с хорошим примером кода дляedit.js ? Похоже, ты вставилapp.js в этом.
 Matt27 июн. 2016 г., 21:30
Я предполагаю, что это ошибка в обратном вызове, но я не уверен.

Ответы на вопрос(2)

Этот случай также происходит, когда у нас возникает ошибка проверки при сохранении формы, и мы используем res.redirect вместо метода res.render.

например-

Пожалуйста, используйте

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

вместо (это неправильное утверждение для узла)

res.redirect('/users/add', {
    countries: countries
});
Решение Вопроса

У меня было похожее сообщение об ошибке только сейчас, и мне удалось решить проблему, изменив:

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 код в вопросе.

 Bavell16 янв. 2018 г., 18:57
@DivyaGalla statusCode должен быть определен первым. То естьvar statusCode = 200; Используйте любой код, подходящий для вашей ситуации.
 Bala Abhinav04 авг. 2017 г., 10:01
Большое спасибо! Сэкономил мне много времени :-)
 JackLametta22 авг. 2017 г., 15:07
Решил и мою проблему тоже! Спасибо!
 Divya Galla05 янв. 2018 г., 08:24
Когда использовал statusCode, он бросал ReferenceError

Ваш ответ на вопрос