javascript - 在 Node.js 中写入文件时创建目录

标签 javascript node.js

我一直在修补 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);

注意事项,

  1. 在许多情况下,您会使用 fs.mkdirSync 而不是 fs.mkdir

  2. 包含尾部斜杠是无害的/没有效果。

  3. 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/

相关文章:

Javascript: object1 = object2 究竟产生了什么?

javascript - 将 onClick 更改为随机

json - 使用nodejs从json数组中获取单个值

node.js - 无法使用 nginx 在快速服务器之上配置 SSL

node.js - Node 的 WebStorm 代码完成显示太多选项

javascript - 在 Internet Explorer 中拖放动态高度损坏的元素上的可滚动容器

javascript - 隐藏滚动条 - Webview - CrossWalk

javascript - 在express js中验证图片大小后才上传图片

node.js - 如何在 mac 中使用 sudo 调试 VSCode 中的 Node ?

javascript - 如何使用 JavaScript 将新元素添加到引用另一个元素的多个位置的 JSON 对象?