[英] How to write file if parent folder doesn't exist?
我需要将文件写入以下路径:
fs.writeFile('/folder1/folder2/file.txt', 'content', function () {…});
但这条路可能并不存在.所以我得到了以下错误:
message=enoint,打开/folder1/folder2/file.txt
如何将内容写入该路径?
我需要将文件写入以下路径:
fs.writeFile('/folder1/folder2/file.txt', 'content', function () {…});
但这条路可能并不存在.所以我得到了以下错误:
message=enoint,打开/folder1/folder2/file.txt
如何将内容写入该路径?
从节点v10开始,它内置于fs.mkdir函数中,我们可以将其与path.dirname结合使用:
var fs = require('fs');
var getDirName = require('path').dirname;
function writeFile(path, contents, cb) {
fs.mkdir(getDirName(path), { recursive: true}, function (err) {
if (err) return cb(err);
fs.writeFile(path, contents, cb);
});
}
对于旧版本,可以使用mkdirp:
var mkdirp = require('mkdirp');
var fs = require('fs');
var getDirName = require('path').dirname;
function writeFile(path, contents, cb) {
mkdirp(getDirName(path), function (err) {
if (err) return cb(err);
fs.writeFile(path, contents, cb);
});
}
如果整个路径已经存在,那么mkdirp
就是一个节点.否则它会为您创建所有缺失的目录.
本模块满足您的需求:https://npmjs.org/package/writefile.在谷歌搜索"writefile mkdirp"时找到了它.这个模块返回一个promise ,而不是接受回调,所以一定要先阅读一些promise 的介绍.这可能会让你的事情变得复杂.
我给出的函数在任何情况下都有效.
GridFS 大文件下载使 Node.js 服务器崩溃. MongoServerError:排序超出了字节的内存限制
自定义 Docker 容器 Github 操作无法在 /github/workspace 中找到 Node 脚本
Cypress net::ERR_EMPTY_RESPONSE 在真实服务器调用上
当我们有“esnext”时,为什么我们需要“nodenext” typescript 编译器选项?
Node.js 17.0.1 Gatsby 错误-“数字信封例程::不支持 ... ERR_OSSL_EVP_UNSUPPORTED”
React + Material-UI - 警告:props 类名不匹配
Typescript eslint - 缺少文件扩展名“ts”导入/扩展
在多个 .env 文件之间切换,例如 .env.development 和 node.js