Angular项目执行npm run build报EINVAL mkdir无效参数错误如何解决
报错原因
该错误为Windows平台下路径拼接逻辑异常导致,构建时错误将源文件的绝对路径直接拼接到输出目录路径末尾,生成了嵌套双盘符的非法路径,最终触发EINVAL: invalid argument参数错误。
报错原文:
95% emitting index-html-webpack-plugin EINVAL: invalid argument, mkdir 'C:\_APS\develop\target\public\C:\_APS\develop\Migrate\product\src\main\angular\src\app\pre\'
解决步骤
- 检查angular.json配置
打开项目根目录的angular.json文件,定位到projects.项目名.architect.build配置段:- 确认
outputPath字段值为相对路径,比如./dist,不要填写带盘符的绝对路径,也不要在路径开头加多余的反斜杠 - 确认
index字段值为指向index.html的相对路径,比如src/index.html,不要使用本地绝对路径
- 确认
- 检查index.html的base href配置
打开src/index.html,确认<base href="">的配置值没有填写带盘符的本地绝对路径,如果是部署到子目录的场景,仅填写子目录路径即可,比如<base href="/pre/"> - 适配32位Win7路径限制
32位Windows 7默认最大路径长度为260字符,你当前的项目路径层级较深,可以将项目迁移到根目录下的短名称文件夹,比如C:\proj\,规避路径长度限制。 - 调整构建命令修复依赖适配bug
如果上述配置无问题,属于Node14与对应版本Angular的index-html-webpack-plugin路径解析适配bug,修改package.json中的build命令,增加适配参数:"scripts": { "build": "node --preserve-symlinks node_modules/@angular/cli/bin/ng build" } - 清理缓存重新构建
执行以下Windows兼容命令清理旧缓存和依赖后重新构建:npm cache clean --force rd /s /q node_modules del package-lock.json npm install npm run build
内容的提问来源于stack exchange,提问作者user1814879
相关产品推荐
相关产品推荐

