本地主机不发送任何数据

Local Host is not sending any data

每当我 运行 这个节点服务器在端口“8000”上时

const http=require('https')
const PORT=8000

const server=http.createServer()

server.on('request',(req,res)=>{

    if (req.url==='friend'){

        res.writeHead(200,{
            'Content-Type':'text/plain',
        })
    
        res.end(JSON.stringify({
            id:1,
            name:'Sir Issac Newton',
        }))

    }

    if (req.url==='foe'){
        res.writeHead(200,{
            'Content-Type':'text/plain',
        })

        res.end('The Enemy is Ego Bro')
    }


})


server.listen(PORT,()=>{
    console.log(`the respnse is exectued at ${PORT}`)
})

我在 Borwser 上收到一条错误消息:

localhost didn’t send any data. ERR_EMPTY_RESPONSE

我尝试更改端口,但它仍然显示 error.Please 我应该怎么做并向我解释这个错误是什么。谢谢!

此代码有 3 个问题。

  1. 您应该将 const http=require('https') 更改为 const http=require('http')。如果您想使用 HTTPS,请参阅 nodejs 文档以了解如何配置 https 服务器

  2. 在 nodejs HTTP 请求中 URL 以 / 开头并且你的条件语句不起作用

  3. 因为请求 URL 与条件语句不匹配,服务器没有响应任何事情,所以发生了这个错误。

你应该这样修改代码:

const http=require('http')
const PORT=8000

const server=http.createServer()

server.on('request',(req,res)=>{

    if (req.url==='/friend'){

        res.writeHead(200,{
            'Content-Type':'text/plain',
        });
    
        res.end(JSON.stringify({
            id:1,
            name:'Sir Issac Newton',
        }));

       return;
    }

    if (req.url==='/foe'){
        res.writeHead(200,{
            'Content-Type':'text/plain',
        });

        res.end('The Enemy is Ego Bro');

        return;
    }

    res.writeHead(400,{
        'Content-Type':'text/plain',
    });

    res.end('URL not match');
})


server.listen(PORT,()=>{
    console.log(`the respnse is exectued at ${PORT}`)
})