报错

报错

https://img1.sycdn.imooc.com//climg/62ef8b7e093c62ac09930694.jpg


相关代码:

const http=require('http')

const server=http.createServer((req,res)=>{
   
    const url=req.url
    const path=url.split('?')[0]
    const method=req.method
    console.log(url)
    console.log(path)

   

    if(path==='/api/list' && method==='GET'){
        res.end('hello world')
    }
    res.end('404')

   
   
})
server.listen(3000)
console.log('http请求已经被监听,3000端口');

尝试过的解决方式:

这样改完就不报错了

const http=require('http')

const server=http.createServer((req,res)=>{
   
    const url=req.url
    const path=url.split('?')[0]
    const method=req.method
    console.log(url)
    console.log(path)

   

    if(path==='/api/list' && method==='GET'){
        res.end('hello world')
    }
    else{
        res.end('404')
    }
    

   
   
})
server.listen(3000)
console.log('http请求已经被监听,3000端口');

是因为res.end 执行了两次吗 ,为什么视频中没报错

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2022-08-07 18:19:09

同学你好,是的,因为res.end执行了两次导致报错,视频中没有报错猜测是版本问题导致,目前版本,使用同学修改后的方式即可。

祝学习愉快~

  • 我也遇到这个报错,没法输出404,加上else就好了,猜测是if语句为false的时候,没有else无法继续往下执行报错

    2023-03-12 10:38:13
  • 猜测不合理。if如果是false,写不写else,下面的语句都会执行,这是正常的js逻辑:

    https://img1.sycdn.imooc.com//climg/640d3ca309d863e906730255.jpg

    个人认为,问题在于,当url符合if语句后,代码会执行res.end('hello world'),然后还会继续执行下面的res.end('404')。即执行了两次res.end方法,从而报错了。

    添加else后,可以保证代码只执行一次res.end,从而不报错。代码不报错,就可以正常输出404了。

    2023-03-12 10:47:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师