2016-06-27 8 views
7

ich ein Problem habe, wo ich den folgenden Fehlercode bin immer wenn eine POST-Anforderung auf diese Anwendung versucht (eingedenk bin ich ein Anfänger node.js/js Programmierer):Auslöser Range: Ungültige Statuscode: 0

Fehler:

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

das folgende ist meine edit.js Strecke, wo ich die Frage glauben auftritt:

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

Ich nehme an, das ist ein Fehler innerhalb eines Rückrufs, aber Ich bin mir nicht sicher. – Matt

+0

Können Sie Ihre Frage mit dem guten Codebeispiel für 'edit.js' aktualisieren? Scheint, als hättest du 'app.js' darin eingefügt. –

Antwort

11

hatte ich eine ähnliche Fehlermeldung gerade jetzt und verwaltet das Problem zu lösen Wechsel:

res.status(statusCode); 

zu:

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

oder gerade:

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

D.h. stellen Sie sicher, dass Sie nicht versuchen, eine invalid HTTP status code irgendwo zu setzen.

Es ist wahrscheinlich, dass dies das Problem ist, aber es sieht so aus, als ob Sie versehentlich den Code app.js dupliziert haben, anstatt den Code edit.js in die Frage einzufügen.

+0

Vielen Dank! Rettete mir viel Zeit :-) –

+0

löste mein Problem auch! Vielen Dank! – JackLametta

+0

Bei Verwendung von statusCode wurde ReferenceError ausgelöst –

1

Dieser Fall auch geschehen, wenn wir sparen Validierungsfehler auf Form haben und wir verwenden res.redirect statt res.render Methode

für Beispiel-

Verwenden Sie bitte

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

statt von (es ist falsche Aussage für Knoten)

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