2016-06-27 11 views
7

Mam problem gdzie ja otrzymuję następujący kod błędu podczas próby żądania POST o tej aplikacji (pamiętając Jestem początkujący programista node.js/js):RangeError: Nieprawidłowy kod stanu: 0

błąd:

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

Poniżej jest moja droga edit.js, gdzie uważam, że problem występuje:

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

Zakładam, że jest to błąd w wywołaniu zwrotnym, ale Nie jestem pewny. – Matt

+0

Czy możesz zaktualizować swoje pytanie za pomocą dobrego przykładu kodu dla 'edit.js'? Wygląda na to, że wkleiłeś w niej 'app.js'. –

Odpowiedz

11

Miałem podobny komunikat o błędzie i dopiero teraz udało się rozwiązać ten problem poprzez zmianę:

res.status(statusCode); 

do:

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

lub po prostu:

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

Tj upewnij się, że nie próbujesz gdzieś ustawić invalid HTTP status code.

Prawdopodobnie jest to problem, ale wygląda na to, że przypadkowo skopiowałeś kod app.js zamiast wklejać kod edit.js w pytaniu.

+0

Wielkie dzięki! Zaoszczędził mi mnóstwo czasu :-) –

+0

Rozwiązałem też mój problem! dzięki! – JackLametta

+0

W przypadku użycia statusCode, rzucił ReferenceError –

1

Ta sprawa również zdarzyć, kiedy mamy błąd sprawdzania poprawności w formularzu zapisu i używamy res.redirect zamiast metody res.render

na przykład-

Proszę używać

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

zamiast (jest to nieprawidłowe wyrażenie dla węzła)

res.redirect('/users/add', { 
    countries: countries 
}); 
Powiązane problemy