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

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

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

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还会执行 

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

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

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

     这样子写我觉得比较好

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

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

    1
    res.end('404')<br>


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


    ```

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

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

祝学习愉快~

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

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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