所以我注意到在对我的Node.js应用程序进行了一些最近的更改后,服务器在一些请求后停止响应。我想我已经找到了罪魁祸首,但想确认一下。
所以我有一个函数在使用后从文件系统中删除文件,我真的不关心文件删除的响应,所以我只是忽略它。
所以我想说我有这个功能:
removeFileAtPath(filePath, callback) {
fs.unlink(filePath, (err) => {
if (callback) {
return callback(err)
}
});
}
这是从中间件函数调用的,因此通常会像这样调用:
uploadFile(req, res, next) {
// Do something
removeFileAtPath(path, (error) => {
if (error) { /* handle error */ }
res.send(someResponse)
});
}
但由于我不关心函数响应,我将removeFileAtPath
函数称为:
uploadFile(req, res, next) {
// Do something
removeFileAtPath(path); // No callback passed in here
res.send(someResponse);
}
像这样的东西会阻塞主循环还是我的问题可能在其他地方?
答案 0 :(得分:0)
尝试在中间件末尾调用next()函数
答案 1 :(得分:0)
不,它不会阻止 - 如果你的意思是主线程和事件循环 - fs.unlinkSync
会阻止这种意义。
但是您仍然需要确保返回响应或调用下一个中间件 - 否则您将"阻止"即使线程和事件循环不会在通常意义上被阻止,服务请求也会被服务,您的服务器仍然可以处理其他请求和事件。