无法在node.js 8.9中设置响应状态代码(尝试2小时后)
尝试:res.statusCode = 404;
和res.writeHead(404,{});
两者都不起作用。
注意:不要使用expressJs
var http = require('http');
//create a server object:
http.createServer(function (req, res) {
try{
res.write('Hie !'); //write a response to the client
res.statusCode = 404;
//res.writeHead(404,{});
res.end(); //end the response
}catch(e){
console.error(e);
}
}).listen(8080); //the server object listens on port 8080
注意:不要使用expressJs
答案 0 :(得分:4)
非常简单,在向响应流写入任何内容之前必须设置statusCode
,否则它是隐式的200代码。
另外,你应该知道你的try ... catch块在这样的回调场景中是无用的,除非你正在做一些可能失败的同步代码。
如果您将代码更新为以下代码,它将起作用:
var http = require('http');
//create a server object:
http.createServer(function (req, res) {
res.statusCode = 404;
res.write('Hi!'); //write a response to the client
res.end(); //end the response
}).listen(8080); //the server object listens on port 8080
您也可以使用ES6语法,出于各种原因,有些人会更好:
const http = require('http');
http.createServer((req, res) => {
res.statusCode = 404;
res.write('Hi!');
res.end();
}).listen(8080);
答案 1 :(得分:-2)
res.sendStatus(statusCode)
Express 5不再支持签名res.send(status),其中status是一个数字。而是使用res.sendStatus(statusCode)函数,该函数设置HTTP响应头状态代码并发送代码的文本版本:“未找到”,“内部服务器错误”,依此类推。
res.status(400);