Nuxt 2.18项目启动npm run dev出现TypeError(invalid options argument)错误
解决Nuxt 2.18启动时mkdirp的"invalid options argument"错误
这个问题的核心是Nuxt 2.18依赖的旧版mkdirp(v1.x)与npm自动安装的新版mkdirp(v2.x+)API不兼容,导致参数传递格式错误。以下是几个可行的修复方案:
方案一:锁定mkdirp兼容版本
这是最稳妥的方法,强制项目使用和Nuxt2兼容的mkdirp@1.0.4:
- 如果你用npm:
- 安装依赖锁定工具:
npm install npm-force-resolutions --save-dev - 在项目根目录的
package.json中添加以下配置:"resolutions": { "mkdirp": "1.0.4" }, "scripts": { "preinstall": "npx npm-force-resolutions" } - 删除项目下的
node_modules文件夹和package-lock.json文件 - 重新安装依赖:
npm install - 再次启动项目:
npm run dev
- 安装依赖锁定工具:
- 如果你用yarn:
- 直接在
package.json中添加:"resolutions": { "mkdirp": "1.0.4" } - 删除
node_modules和yarn.lock - 执行
yarn install后启动项目
- 直接在
方案二:降级npm版本到v6
npm 7及以上版本的peer依赖处理逻辑和v6不同,可能导致依赖树出现不兼容的版本:
- 全局降级npm:
npm install -g npm@6 - 删除
node_modules和package-lock.json - 重新安装依赖:
npm install - 启动项目:
npm run dev
方案三:临时修改mkdirp代码(不推荐)
如果前两个方案都无法生效,可以临时修改报错文件,但更新依赖后会失效:
- 打开报错的文件
node_modules/mkdirp/lib/opts-arg.js - 找到第13行的报错代码,修改参数判断逻辑,比如将严格校验改为宽松判断:
// 原代码 throw new TypeError('invalid options argument') // 修改为(仅临时用) if (typeof opts !== 'object' || opts === null) throw new TypeError('invalid options argument')
内容的提问来源于stack exchange,提问作者mattBurnett
相关产品推荐
相关产品推荐

