weixin_50650986 2021-07-21 18:32 采纳率: 0%
浏览 20

有关write after end 的问题 ,有懂哥吗


const http = require('http');
const url = require('url');
const path = require('path');
const routes = require('./module/routes');

http.createServer(function (req, res) {
    //创建静态web服务
    var flag=false
   flag= routes.static(req, res, 'static');
    //路由
    let pathname = url.parse(req.url).pathname.replace("/","");//'/login'=>'login'
    //http://127.0.0.1:3000/news?page=2&id=1
    let extname = path.extname(pathname);


    if (!extname) {   //如果有后缀名的话让静态web服务去处理
    try {
        routes[pathname](req, res);
    } catch (error) {
        routes['error'](req, res);
    }
}


}).listen(3000);

console.log('Server running at http://localhost:3000/');
const fs = require('fs');
const path = require('path');
const url = require('url');
const ejs = require('ejs');

//私有方法
let getFileMime = function (extname) {
    var data = fs.readFileSync('./data/mime.json'); //同步方法
    let mimeObj = JSON.parse(data.toString());
    return mimeObj[extname];
}
let app={
    static :(req,res,staticPath)=>{
        //获取地址
        let pathname = url.parse(req.url).pathname;
        //pathname = pathname=="/"?"/index.html":pathname;
        let extname = path.extname(pathname);
        //读取文件
        if (pathname != '/favicon.ico'&& extname) {
            try {
                let data = fs.readFileSync('./' + staticPath + pathname);
                if (data) {
                    let mime = getFileMime(extname);
                    res.writeHead(200, { 'Content-Type': '' + mime + ';charset="utf-8"' });
                    res.end(data);
                }
            } catch (error) {
            }
        }
    },login:(req,res)=>{
        ejs.renderFile('./views/form.ejs',{},(err,data)=>{
            res.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});
            res.end(data);
        })
},news:(req,res)=>{
        //news
        res.end('news')
    },doLogin:(req,res)=>{
        let postData = '';
        req.on('data',(chunk)=>{
            postData+=chunk;
        })
        req.on('end',()=>{
            console.log(postData);
            res.end(postData);
        })
    },error:(req,res)=>{
     res.end('error')
    }
}
module.exports=app;




把pathname = pathname=="/"?"/index.html":pathname; 备注掉了就不会报错 但是保留就会报错,不保留就不能默认进入index.html页面

img

  • 写回答

1条回答 默认 最新

  • 接着奏乐吧 2022-10-24 11:09
    关注

    先console一下,看一下你的pathname取到的是什么东西,然后再想下面这个语句会不会导致下面出错

    评论

报告相同问题?

问题事件

  • 创建了问题 7月21日

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?