运行npx create-react-app创建React项目时触发npm ENOENT报错
报错原因
你当前是在WSL(Windows Linux子系统)环境下执行命令,项目创建路径/mnt/c/pr0属于WSL挂载的Windows NTFS分区,这个npm ERR! enoent rename报错是WSL跨文件系统安装npm依赖的典型问题,触发场景一般是这几个:
- WSL跨NTFS分区做文件重命名、软链接操作时存在兼容性缺陷,npm安装依赖时需要把临时下载的包重命名替换成正式文件,跨分区时会偶发找不到目标文件的问题
- 本地npm缓存损坏,解压后的依赖包缺文件
- 本地缓存的旧版create-react-app、npm本身和新版Node.js存在兼容冲突
解决方法
按优先级从高到低尝试,每步操作完重跑创建命令验证即可:
- 优先把项目放到WSL原生Linux文件系统下创建,不要放在
/mnt/c开头的Windows挂载分区
直接切到WSL用户家目录执行创建就行,这是WSL官方推荐的开发文件存放方式,能同时解决跨系统兼容性问题和文件IO性能差的问题,90%的同类报错这步就能搞定:cd ~ npx create-react-app blockchain-developer-bootcamp - 必须放在Windows分区的话,先强制清理损坏的npm缓存:
清理完成后关闭当前终端重新打开,再执行创建命令。npm cache clean --force npm cache verify - 调整npm配置规避跨系统文件锁冲突:
先执行两行配置修改:
再重新跑创建命令,后续如果需要还原配置,执行npm config set script-shell /bin/bash npm config set legacy-peer-deps truenpm config delete script-shell和npm config delete legacy-peer-deps即可。 - 检查WSL版本,如果你当前用的是WSL1,升级到WSL2即可。WSL1对Linux文件系统API模拟不完整,重命名、软链接类操作的报错概率远高于完整虚拟化的WSL2。
- 以上都无效的话,手动指定拉取最新版create-react-app创建,避免本地缓存的旧版初始化脚本有兼容问题:
npx create-react-app@latest blockchain-developer-bootcamp
内容的提问来源于stack exchange,提问作者Moose
相关产品推荐
相关产品推荐

