Node.js调用fs.mkdirSync创建目录报ENOENT错误该如何解决?
问题原因
fs.mkdirSync()默认仅支持创建单级目录,你要创建的./images/logger是多级路径,如果上级目录./images不存在,就会抛出ENOENT: no such file or directory错误。- 你的代码片段中没有引入内置
fs模块,漏写引入语句也会导致运行异常。
修复方案
方案1:开启递归创建配置(推荐,适配Node.js v10.12.0及以上版本)
给fs.mkdirSync()传入第二个参数{ recursive: true }开启多级目录递归创建能力,开启该参数后目标目录已存在时也不会抛出错误,可直接省略前置的目录存在判断,简化代码如下:
const fs = require('fs'); const folderName = `./images/logger`; try { fs.mkdirSync(folderName, { recursive: true }); } catch (err) { console.error(err); }
方案2:低版本Node.js兼容方案
如果使用的Node.js版本低于v10.12.0,可以手动实现递归创建逻辑:
const fs = require('fs'); const path = require('path'); const folderName = `./images/logger`; function mkdirRecursiveSync(dirPath) { if (fs.existsSync(dirPath)) return // 先递归创建上级目录 mkdirRecursiveSync(path.dirname(dirPath)) fs.mkdirSync(dirPath) } try { mkdirRecursiveSync(folderName) } catch (err) { console.error(err) }
内容的提问来源于stack exchange,提问作者Sachin Titus
相关产品推荐
相关产品推荐

