NodeJS createServer不显示响应

gojuced7  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(114)

如下面发布的代码所示,我正在使用createServer创建一个服务器。我想测试一下。因此,在浏览器中,我输入了以下URL:

http://localhost:3000/
http://localhost:3000/hello

我希望收到第一个if-condition中声明的文本,因为前一个url是/,我希望收到第二个if-condition中声明的文本,因为后一个url是/hello
但上述案件均未发生。请你确认我的理解,并告诉我为什么网页浏览器显示没有React?

编码

const options = {
keepAlive:true,
}
const functionListener = (req,res)=>{
    console.log("headerSent:",res.headersSent())
    console.log("statusCode :",res.statusCode ())
    if (req.url == '/') {
        res.writeHead(200, "succeeded",{ 'Content-Type': 'text/plain' });
        // set response content    
        res.write('<html><body><p>This is default Page.</p></body></html>');
        res.end(JSON.stringify({
            data: 'default!',
          }));
    }

    if (req.url == '/hello') {
        res.writeHead(200, "succeeded",{ 'Content-Type': 'text/plain' });
        // set response content    
        res.write('<html><body><p>This is hello Page.</p></body></html>');
        res.end(JSON.stringify({
            data: 'Hello World!',
          }));
    }
}
const server = http.createServer(options,functionListener => {

});
server.listen(port)
qlvxas9a

qlvxas9a1#

要开始更改此:

const server = http.createServer(options,functionListener => {

});

对此:

const server = http.createServer(options, functionListener);

你的第一个版本只是传递了一个空箭头函数作为参数,它的第一个参数名为functionListener,与你定义的同名函数没有任何联系。
固定版本传递对您定义的functionListener函数的引用,以便http.createServer()可以根据需要调用该函数。
那么,同时发送HTML响应和JSON响应就没有意义了。选择一个或另一个,并设置content-type匹配。

相关问题