第一次成功,第二次cmd就会出现这个Error [ERR_STREAM_WRITE_AFTER_END]: write after end
# 具体遇到的问题
we
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
在这里输入代码,可通过选择【代码语言】突出显示
const http= require('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.end( JSON.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.end( JSON.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端口')
正在回答
同学你好,问题解答如下:
使用if定义多个路由时,每个路由定义完成后,建议添加上return关键字,终止程序往下执行,否则代码会报错,如下:

建议同学将return关键字添加上。
祝学习愉快!
- 参与学习 人
- 解答问题 307 个
前端工程师会后端开发已是趋势。从node.js到koa2再到数据库知识。结合真实项目,从项目需求分析、接口和数据设计到业务开发,帮你打通前后端任督二脉,为就业加码。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星