我正在使用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();
}
有人遇到过这个问题吗?
问题是因为这个调用是异步的,并且可能会在之后丢失上下文,我可以通过使用
fs.writeFileSync
来修复它,它是同步执行的。希望这有帮助
添加
console.log('captures/' + getFileName())
只是为了确保您的文件名正确。当我遇到这个问题时,结果发现我的文件路径/名称有问题,而节点并没有向我抛出错误来解释。
如果您想异步写入文件,请尝试使用
fs/promises
而不是 fs
。
const { writeFile } = require("fs/promises");
(async () => {
await writeFile('myFile.txt', 'my content', (err) => {});
})();
来自 writeFile
的
fs
无效。它将异步执行,但不是异步等待的含义。 writeFile
来自 fs/promises
返回一个 Promise,因此 async-await 将按预期工作。
对于 Typescript 版本, 只是在这里分享我的经验,在我的用例中,有一个 JSON 文件,我用来存储一些临时数据,读取它并进行一些更改并更新它,并将更新的数据存储到相同的 JSON 文件中,以供下一个周期使用。
fs.writeFile
没有抛出任何错误,同时它没有更新我的 JSON 文件,因为 JS 版本运行良好,然后我意识到打字稿在我的根或 src 目录中进行了这些更改。在那里创建了另一个 JSON 文件。
我的电脑上也有类似的问题,只需确保在你的 vs 代码中正确保存了文件,然后在我的情况下重试,之后它会以某种方式工作🤔
可能存在权限问题。
进入您保存文件的目录,然后
sudo chmod 777 .