fs.writeFile没有错误,但写入文件失败

问题描述 投票:0回答:6

我正在使用node.js,尝试保存文件,没有抛出错误,是的,图像不会保存。这就是我保存文件的方式:

var url = 'captures/' + getFileName() + '.png';

    fs.writeFile(url, base64, 'base64', function(err) {

        if(err) {
            console.log(err);
        } else {
            console.log("The file was saved!");
        }
    });

有帮手为我命名文件名:

function getFileName(){
    var d = new Date()
    return d.getMonth()+'-'+d.getDate()+'-'+d.getYear()+'-'+d.getHours()+'-'+d.getMinutes()+d.getSeconds();
}

有人遇到过这个问题吗?

javascript node.js fs
6个回答
48
投票

问题是因为这个调用是异步的,并且可能会在之后丢失上下文,我可以通过使用

fs.writeFileSync
来修复它,它是同步执行的。希望这有帮助


3
投票

添加

console.log('captures/' + getFileName())
只是为了确保您的文件名正确。当我遇到这个问题时,结果发现我的文件路径/名称有问题,而节点并没有向我抛出错误来解释。


3
投票

如果您想异步写入文件,请尝试使用

fs/promises
而不是
fs

const { writeFile } = require("fs/promises");

(async () => {
    await writeFile('myFile.txt', 'my content', (err) => {});
})();
来自

writeFile

fs
无效。它将异步执行,但不是异步等待的含义。
writeFile
来自
fs/promises
返回一个 Promise,因此 async-await 将按预期工作。

在此处了解更多信息:https://nodejs.org/api/fs.html#callback-example


2
投票

对于 Typescript 版本, 只是在这里分享我的经验,在我的用例中,有一个 JSON 文件,我用来存储一些临时数据,读取它并进行一些更改并更新它,并将更新的数据存储到相同的 JSON 文件中,以供下一个周期使用。

fs.writeFile
没有抛出任何错误,同时它没有更新我的 JSON 文件,因为 JS 版本运行良好,然后我意识到打字稿在我的根或 src 目录中进行了这些更改。在那里创建了另一个 JSON 文件。


0
投票

我的电脑上也有类似的问题,只需确保在你的 vs 代码中正确保存了文件,然后在我的情况下重试,之后它会以某种方式工作🤔


-2
投票

可能存在权限问题。

进入您保存文件的目录,然后

sudo chmod 777 .

© www.soinside.com 2019 - 2024. All rights reserved.