Laravel 5.6执行npm install报错:path参数需为字符串,接收到类型object
npm install的"path参数类型错误"问题 问题回顾
你在Ubuntu 18.04系统中运行Laravel 5.6项目的npm install命令时,碰到了这个恼人的错误:
npm ERR! The "path" argument must be of type string. Received type object
对应错误截图如下:
常见原因及解决方案
我处理过好几次这类问题,大多是版本不兼容或者缓存损坏导致的,试试下面几个方案:
先检查Node.js和npm版本是否兼容
Laravel 5.6对Node和npm有特定的版本要求,太高的版本(比如Node 12+)会和旧版Laravel的前端依赖冲突。建议切换到Node 10.x系列,搭配npm 6.x版本。
用nvm(Node版本管理器)切换版本最方便:# 安装nvm后执行以下命令 nvm install 10 nvm use 10之后再用
node -v和npm -v确认版本是否切换成功。清理npm缓存和旧依赖文件
缓存损坏是这类奇怪错误的常见元凶,按顺序执行以下命令:# 强制清理npm缓存 npm cache clean --force # 删除旧的依赖包和锁文件 rm -rf node_modules package-lock.json重新运行
npm install,看看错误是否消失。检查package.json的语法问题
如果你修改过项目的package.json,仔细检查有没有语法错误,比如有没有把依赖版本写成了对象而不是字符串——这种小失误也会触发这类类型错误。如果不确定,可以恢复Laravel 5.6默认的package.json配置再试。换用yarn安装依赖
如果npm还是搞不定,试试用yarn替代:# 先安装yarn sudo apt install yarn # 同样清理旧文件后执行 rm -rf node_modules package-lock.json yarn install
总结
优先尝试清理缓存和切换兼容的Node版本,这两个方案解决了我遇到的绝大多数类似问题。如果还是不行,可以检查package.json的配置是否有误。
内容的提问来源于stack exchange,提问作者Ahmad Jamal

