我一直在修补 Node.js,发现了一个小问题。我有一个脚本,它位于一个名为data
的目录中。我希望脚本将一些数据写入 data
子目录中的子目录中的文件。但是我收到以下错误:
{ [Error: ENOENT, open 'D:\data\tmp\test.txt'] errno: 34, code: 'ENOENT', path: 'D:\\data\\tmp\\test.txt' }
代码如下:
var fs = require('fs');
fs.writeFile("tmp/test.txt", "Hey there!", function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});
如果 Node.js 不退出以写入文件,谁能帮我找出如何让 Node.js 创建目录结构?
最佳答案
Node > 10.12.0
fs.mkdir现在接受 { recursive: true }
选项,如下所示:
// Creates /tmp/a/apple, regardless of whether `/tmp` and /tmp/a exist.
fs.mkdir('/tmp/a/apple', { recursive: true }, (err) => {
if (err) throw err;
});
或 promise :
fs.promises.mkdir('/tmp/a/apple', { recursive: true }).catch(console.error);
注意事项,
在许多情况下,您会使用
fs.mkdirSync
而不是fs.mkdir
包含尾部斜杠是无害的/没有效果。
mkdirSync/mkdir no nothing 如果目录已经存在,则无需检查是否存在。
Node <= 10.11.0
您可以使用 mkdirp 之类的软件包解决此问题或 fs-extra .如果您不想安装软件包,请参阅下面的 Tiago Peres França 的回答。
关于javascript - 在 Node.js 中写入文件时创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13542667/