我目前正在启动我的NodeJS应用程序,并且我有以下if语句:
Error: ENOENT, no such file or directory './realworks/objects/'
    at Object.fs.mkdirSync (fs.js:654:18)
    at Object.module.exports.StartScript (/home/nodeusr/huizenier.nl/realworks.js:294:7)
然而,奇怪的是该文件夹已存在,但检查在以下代码段上失败:
if(fs.existsSync(objectPath)) {
    var existingObjects = fs.readdirSync(objectPath);
    existingObjects.forEach(function (objectFile) {
        var object = JSON.parse(fs.readFileSync(objectPath+objectFile));
        actualObjects[object.ObjectCode] = object;
    });
}else{
    fs.mkdirSync(objectPath); // << this is line 294
}
我无法理解no such file or directory在创建目录时如何发生.
Yoa*_*osh 15
如果缺少沿给定路径的任何文件夹,mkdir将抛出ENOENT。
有两种可能的解决方案(不使用第三方包装):
fs.mkdir路径中每个不存在的目录。recursive引入的选项:fs.mkdir('./path/to/dir', {recursive: true}, err => {})小智 10
在这里解决 如何使用节点的 fs.mkdirSync 创建完整路径?
NodeJS 10.12.0 版本添加了对 mkdir 和 mkdirSync 的原生支持,以递归方式创建目录,并使用 recursive: true 选项,如下所示:
fs.mkdirSync(targetDir, { recursive: true });
如果你更喜欢 fs Promises API,你可以写
fs.promises.mkdir(targetDir, { recursive: true });
当您使用fs.mkdir或时fs.mkdirSync,同时传递类似的路径folder1/folder2/folder3,folder1并且folder2必须存在,否则会出现上述错误。
| 归档时间: | 
 | 
| 查看次数: | 20578 次 | 
| 最近记录: |