我在使用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某些机制的问题,但具体并不清楚,请问这是什么原因?该如何处理?
报错的信息说的是文件被关闭后进行了读取操作,贴出来的代码太少,不清楚你在其他地方的操作。
另外 fs.readFile 方法当 path 是一个目录时,与macOS、Linux、Windows平台相关,建议你仔细看下官方文档。