【问题标题】:How to create a directory in node js using fs.mkdir?如何使用 fs.mkdir 在节点 js 中创建目录?
【发布时间】:2016-12-29 09:15:52
【问题描述】:
我正在尝试使用以下代码使用异步函数 fs.mkdir 创建目录,但出现错误
ERROR: No such file or directory, mkdir 'C:\tmp\test';
var fs = require("fs");
console.log("Going to create directory /tmp/test");
fs.mkdir('/tmp/test',function(err){
if (err) {
return console.error(err);
}
console.log("Directory created successfully!");
});
任何有关此的帮助将不胜感激。
【问题讨论】:
标签:
javascript
node.js
directory
filesystems
mkdir
【解决方案1】:
例如,如果目录“/tmp”不存在,则可能会发生此错误。
如果是这种情况,您需要在创建“/tmp”之前和“/tmp/test”之后。
有一个包mkdirp可以帮助你:
所以,代码将是:
var mkdirp = require('mkdirp');
mkdirp('/tmp/test', function (err) {
if (err) console.error(err)
else console.log('Done!')
});
【解决方案2】:
尝试在与脚本相同的路径中创建一个目录 tmp,它应该可以工作,否则您必须编写完整路径。如果 tmp 目录不存在,则必须先创建它。
【解决方案3】:
尝试使用 fs.mkdirSync 并检查目录是否存在。
var checkIfDirectoryExists = function(dirPath, successCallback, errorCallback) {
try {
// Query the entry
var stats = fs.lstatSync(dirPath);
// Is it a directory?
if (stats.isDirectory()) {
successCallback();
}
} catch (e) {
errorCallback();
}
};
var mkdirIfNotExists = function(dirPath) {
return new Promise(function(resolve, reject) {
checkIfDirectoryExists(dirPath, function() {
resolve();
}, function() {
fs.mkdirSync(dirPath);
resolve();
});
});
};