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

报错TypeError: mkdirp.sync不是函数,删node_modules重装依赖仍未解决

解决mkdirp.sync is not a function报错问题

问题场景

运行Node.js脚本抓取街道名称并生成HTML页面时,触发如下报错:

TypeError: mkdirp.sync is not a function
at createDirectory (/Users/name/Documents/WebDev/street-owl/page-generator.js:15:12)
at Element. (/Users/name/Documents/WebDev/street-owl/page-generator.js:65:5)

脚本已通过const mkdirp = require('mkdirp');引入依赖,且完成安装,删除node_modules重装后问题依旧,出错代码段:

// Helper function to create a directory if it doesn't exist
function createDirectory(dirPath) {
  if (!fs.existsSync(dirPath)) {
    mkdirp.sync(dirPath);
  }
}

问题原因

mkdirp在v2.x及以后版本调整了API结构,同步方法的调用逻辑或导出方式发生变化,旧写法无法适配新版本;另外Node.js原生API已支持递归创建目录,无需依赖第三方包也能实现需求。

解决方法

方法1:改用Node.js原生API替代mkdirp

Node.js v10.12.0及以上版本的fs.mkdirSync支持recursive参数,可直接递归创建目录,无需依赖mkdirp:

const fs = require('fs');

function createDirectory(dirPath) {
  // recursive: true 会自动创建不存在的父目录,无需提前判断目录是否存在
  fs.mkdirSync(dirPath, { recursive: true });
}

方法2:调整mkdirp调用方式适配新版本

若坚持使用mkdirp,先查看当前安装版本:

npm list mkdirp
  • 版本为v2.x/v3.x:同步方法调用逻辑正确,但可简化代码(mkdirp.sync会自动处理目录已存在的情况):
    const mkdirp = require('mkdirp');
    
    function createDirectory(dirPath) {
      mkdirp.sync(dirPath);
    }
    
  • 版本为v1.x及以下:原写法本身正确,若仍报错可强制安装指定稳定版本:
    npm install mkdirp@1.0.4
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:37:08