You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js使用fs.mkdir创建多级目录失败、无法自动生成父级目录如何解决?

问题原因

  • 原生fs.mkdir默认不开启递归创建父目录配置,父级目录不存在时会直接抛出错误
  • 回调函数内的return仅作用于回调本身,外层逻辑无法接收这个返回值,所以无法正常返回成功提示

修复方案

回调写法(兼容原有逻辑)

import { mkdir } from 'fs';
import { join } from 'path'; // 注意原代码遗漏了join的导入,需补充

const targetPath = join(__dirname, '../folder_to_create_directory/', req.body.path);
// 新增{ recursive: true }配置开启递归创建
mkdir(targetPath, { recursive: true }, (err) => {
    if (err) {
        // 错误返回逻辑写在回调内部,比如接口返回可写为res.send("error")
        console.log("error");
        return;
    }
    // 成功返回逻辑写在回调内部,比如接口返回可写为res.send("success")
    console.log("success");
});

更推荐的async/await写法(逻辑更清晰,避免回调嵌套问题)

import { mkdir } from 'fs/promises';
import { join } from 'path';

// 以下逻辑需写在async函数内部
try {
  const targetPath = join(__dirname, '../folder_to_create_directory/', req.body.path);
  await mkdir(targetPath, { recursive: true });
  // 可直接在这里返回成功结果
  return "success";
} catch (err) {
  // 捕获错误返回失败结果
  return "error";
}

注意事项

{ recursive: true }配置需要Node.js 10.12.0及以上版本支持,低于该版本需升级Node.js或者自行实现递归创建目录逻辑。

内容的提问来源于stack exchange,提问作者mevr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:12:02