2016-06-27 30 views
7

Sto avendo un problema in cui sto ottenendo il seguente codice di errore quando si tenta una richiesta POST su questa applicazione (tenendo a mente io sono un programmatore principiante Node.JS/js):RangeError: codice di stato non valido: 0

Errore:

[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; 

Di seguito è riportato il mio percorso edit.js, dove credo che il problema è in corso:

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

Presumo che si tratti di un errore all'interno di una richiamata, ma Non ne sono sicuro. – Matt

+0

Puoi aggiornare la tua domanda con l'esempio di codice valido per 'edit.js'? Sembra che tu abbia incollato "app.js" al suo interno. –

risposta

11

ho avuto un messaggio di errore simile in questo momento e sono riusciti a risolvere il problema cambiando:

res.status(statusCode); 

a:

if (statusCode >= 100 && statusCode < 600) 
    res.status(statusCode); 
else 
    res.status(500); 

o semplicemente:

res.status(statusCode >= 100 && statusCode < 600 ? err.code : 500); 

Vale a dire assicurati di non provare a impostare un invalid HTTP status code da qualche parte.

È probabile che questo sia il problema ma sembra che tu abbia accidentalmente duplicato il codice app.js invece di incollare il codice edit.js nella domanda.

+0

Grazie mille! Mi ha risparmiato un sacco di tempo :-) –

+0

Risolto anche il mio problema! Grazie! – JackLametta

+0

Quando usato statusCode, ha gettato ReferenceError –

1

Questo caso avvenire anche quando abbiamo errore di convalida sulla forma salvare e che stiamo usando res.redirect invece di metodo res.render

per esempio-

Si prega di utilizzare

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

invece di (è errata istruzione per nodo)

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