TypeError: Cannot read property 'Symbol(asyncId)' of null

新手上路,请多包涵

我在使用node.js的http.createServer时,总会在res.write处报错。

报错信息如下:

_http_outgoing.js:636
    nextTick(msg.socket[async_id_symbol],
                       ^

TypeError: Cannot read property 'Symbol(asyncId)' of null
    at write_ (_http_outgoing.js:636:24)
    at ServerResponse.write (_http_outgoing.js:630:10)
    at C:\Users\Administrator\Desktop\XXXXXX\demo\data.js:32:17
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:503:3)

报错处的代码

    var url = req.url; 
    var file = documentRoot + url;
    console.log(url);
    fs.readFile(file, function(err,data){
        if(err){
            res.writeHeader(404,{'content-type' : 'text/html;charset="utf-8"'});
            res.write(err);
        }else{
            res.writeHeader(200,{'content-type' : 'text/html;charset="utf-8"'});
            res.write(data);
        }
    });

是在“res.write(data);”这一行报错的。

我在网上并没有搜索到Symbol(asyncId)的相关信息,我想可能是response.write某些机制的问题,但具体并不清楚,请问这是什么原因?该如何处理?

阅读 3.4k
1 个回答

报错的信息说的是文件被关闭后进行了读取操作,贴出来的代码太少,不清楚你在其他地方的操作。
另外 fs.readFile 方法当 path 是一个目录时,与macOS、Linux、Windows平台相关,建议你仔细看下官方文档。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题