删除后文件保留在我的文件夹中,但在重新启动 Node JS 后删除

File stay in my folder after deleting but deleted after restart Node JS

我有一个循环遍历包含文件路径的数组的函数,然后删除每个文件。 这些文件使用 Multer 上传到文件夹“assets/temp/” 这是我使用 fs 的删除方法:

exports.unlinkFiles = (filesPathsArr) => {
    try {
        filesPathsArr.forEach((filePath) => {
            if (fs.existsSync(filePath)) {
               fs.unlinkSync(filePath)
               console.log('File deleted : ', filePath)
            }
        })
    } catch (error) {
        throw error
    }
}

我的输入例如:

['assets\temp\pexelsphoto19886811645117462309.jpg', 'assets\temp\relaxtriptest1645118333937.mp3']

我的输出:

File Deleted : assets\temp\pexelsphoto19886811645117462309.jpg
File Deleted : assets\temp\relaxtriptest1645118333937.mp3

但在我的临时文件夹中:

+ 如果我尝试打开文件,它会显示 'Enable to read..'

+ 当我重新启动服务器时,文件就消失了

这只是我机器的本地问题吗,也许这个问题会在生产中消失?或者这只是一个我不应该担心的小细节?还是其他原因?

我解决了问题!

用Multer上传文件后,我将它上传到AWS S3。

但问题是,如果AWS代码有错误,那么我会抛出异常,然后从临时目录中删除上传的文件。但是通过这样做,我没有让 AWS 函数完成,所以读取流仍然打开。

然后解决方案是myReadStreamCreated.destroy()在函数的末尾,也在try catch bloc的catch中,如果抛出异常,让fs.unlink能够删除文件正确。

感谢ruby-newbie