Nodejs Express response.download() 未按预期运行

Nodejs Express response.download() Not Behaving as Expected

我正在使用以下代码来跟踪活动下载计数。

router.get('/download/:fileName', (req, res) => {
    let fileName = req.params.fileName;
    let baseFilePath='/home/filePath';

    incrementDownloadCount(fileName);

    return res.download(
        `${baseFilePath}/${fileName}`,
        `${fileName}`,
        function (err) {
            if (err) {
                console.log(`ERROR ++ : ${err}`);
            } else {
                console.log('download completed');
            }
            decrementDownloadCount(fileName);
        }
    );
});

每次开始下载时,它都会将下载计数递增 1,但几秒钟后 'download completed' 会打印到日志中,并且在下载过程中下载计数会递减。

根据 nodejs express 文档,回调函数在下载完成后或发生异常时调用。有人可以帮忙吗?

我正在使用 nodejs 14.16.0 和 express 4.17.1

终于找到了这个场景背后的原因。 我使用 nginx 服务器作为节点应用程序的反向代理,nginx 缓存内容并在关闭与客户端的连接之前关闭与节点应用程序的连接。

所以这是通过

解决的
proxy_request_buffering off;
proxy_max_temp_file_size 0;

在 nginx 服务器的 location / 块内