第一次成功,第二次cmd就会出现这个Error [ERR_STREAM_WRITE_AFTER_END]: write after end

第一次成功,第二次cmd就会出现这个Error [ERR_STREAM_WRITE_AFTER_END]: write after end

# 具体遇到的问题
we
# 报错信息的截图
http://img1.sycdn.imooc.com//climg/5fa3596c09b70d1509930519.jpg# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

const httprequire('http')//conmonjs

//requie 三个层级:1.系统自带模块;2.npm安装模块;3.自定义(‘’)


const querystring = require('querystring')


const server = http.createServer((req,res=> {

    console.log('已经收到了http请求')

    const url=req.url//接收url地址

    const path = url.split('?')[0]//以?为分隔符取后面的数值

    const queryStr = url.split('?')[1]

    const method = req.method//获取method形式

    // console.log('url',url)

    // console.log('method',method)


//   解析 querystring ,

    // const qurey = {}

    // qureyStr && qureyStr.split('&').forEach(item =>{

    //     key = item.split('=')[0]

    //     value = item.split('=')[1]

    //     qurey[key]={value}

    //     console.log(qurey)

    // })


const query = querystring.parse(queryStr)

console.log('query is',query)


//定义路由:模拟获取留言板列表

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

    {

        // if (query.filterType==='1')

        // res.end('this is list router, all')

        // if (query.filterType==='2')

        //  res.end('this is list router, only mine')

         const result = {

                errno: 0,

                data: [

                    {user: '张三'content:'留言1'},

                    {user: '李四'content:'留言2'}

                ]

         }

         res.writeHead(200,{'Content-type':'applicattion/json'})

         res.endJSON.stringify(result))

    }

    //定义路由:模拟创建留言

    if(path === '/api/create' && method ==='POST')

    {

        // if (query.filterType==='2')

        // res.end('this is POST')

let bodyStr=''

req.on('data'chunk=>bodyStr = bodyStr+chunk.toString() })

req.on('end',()=>{

console.log("bodyStr is",bodyStr)

res.end('接收完成')

})

        const result = {

            errno: 0,

            message: '创建成功'   

           }

     res.writeHead(200,{'Content-type':'applicattion/json'})

         res.endJSON.stringify(result))

    }

    // else res.end('404')

    res.writeHead(404,{'Content-type':'applicattion/plain'})

    res.end'404 NOT FOUND')

    //  res.writeHead(404, {'Content-type':'text/html'})

    //  res.end(' 

    //  <!DOCTYPE html>

    //  <html>

    //      <head>

    //          <title>404</title>

    //      </head>

    //      <body>

    //          <h1>404 not found</h1>

    //      </body>

    //      </html>')

         }

         )



server.listen(8000)//可以监听http请求

console.log('http 请求已经被监听,8000端口')


正在回答

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

1回答

同学你好,问题解答如下:

使用if定义多个路由时,每个路由定义完成后,建议添加上return关键字,终止程序往下执行,否则代码会报错,如下:
http://img1.sycdn.imooc.com//climg/5fa369c809b0d69307550492.jpg

建议同学将return关键字添加上。

祝学习愉快!

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

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

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

0 星
5. Node.js全栈开发
  • 参与学习           人
  • 解答问题       307    个

前端工程师会后端开发已是趋势。从node.js到koa2再到数据库知识。结合真实项目,从项目需求分析、接口和数据设计到业务开发,帮你打通前后端任督二脉,为就业加码。

了解课程
请稍等 ...
微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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