为什么我在测试这段代码的时候

为什么我在测试这段代码的时候

为什么我在测试这段代码的时候,当匹配一遍正确的路由之后,再刷新就会   报错误

http://img1.sycdn.imooc.com//climg/60978aca099b504606830210.jpg

http://img1.sycdn.imooc.com//climg/60978ad209e71a0c10490825.jpg



代码:

const http = require('http')


const server = http.createServer((reqres=> {

    const url = req.url

    const path = url.split('?')[0]

    const method = req.method


    if ( path === '/api/list' && method === 'GET' ) {

        res.end('this is list router')

    }

    

    res.end('404')

})


server.listen(3000)

console.log('http 请求已经被监听,3000端口,请访问 http://localhost:3000')


正在回答

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

3回答

同学你好,因为老师测试代码加不加return确实都不会出现报错,咨询了其他老师,了解到这个老师之前测试时,出现了与同学一样的报错,但是现在测试就不会出现报错了,所以老师们目前也不清楚具体是什么原因造成的。

推荐同学在代码中加上return,解决报错问题即可

祝学习愉快~


好帮手慕慕子 2021-05-09 16:27:17

同学你好,老师就是按着同学说的这样操作的,确实不会出现报错。

可能是由于在if语句中直接使用res.end()导致的,建议参考下图修改,前面添加关键字return,保存后再测试下。

http://img1.sycdn.imooc.com//climg/60979c9c0957611f06550212.jpg

祝学习愉快~

  • 提问者 xiao白做大事 #1

    谢谢老师,加上return 就好了,这是为什么呢?

    2021-05-09 16:46:14
  • API调用工程师 回复 提问者 xiao白做大事 #2

    路由匹配之后执行了if里面的逻辑。 你后面还有个res.end还会执行 

    举个例子
    var a =2
    if(a){
     a++
    }
    a =4 这里的代码也会执行

    因为res.end()方法在if中用过后,有在文末用了一次,都end了,就不能再写了 所以会报错!

    很简单的道理你不可能同时返回两个东西

     这样子写我觉得比较好

    const http =require('http')
    const server=http.createServer((req,res)=>{
        const url =req.url
        const path =url.split('?')[0]
        const method =req.method
        // 定义一个get路由 获取留言板列表
        if(path === '/api/list' && method === 'GET'){
            res.end('this is list ')
        } 
        // 定义一个POST路由 创建留言板
        else if(path === '/api/create' && method === 'POST'){
            res.end('create')
        }
        else {
            res.end('404')
        }
    })
    server.listen(3000)
    console.log('http请求已经被监听,3000端口')

    当然你加return直接返回了 执行不到这句话

    res.end('404')


    这是我想的 有问题欢迎指正!


    ```

    2021-08-08 20:01:29
好帮手慕慕子 2021-05-09 15:39:37

同学你好,老师在源码中测试粘贴的这段代码是没有问题的,访问之后,多次刷新都不会出现报错的。建议同学再回顾下视频,结合源码,看看是否是哪里操作有误导致的呢。

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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