全新Laravel 5.6.x安装执行npm run dev报错求助
解决Laravel 5.6中
npm install权限错误问题 看起来你遇到的核心问题是文件权限冲突——虽然你给了项目目录777权限,但用sudo执行npm install会导致node_modules内的文件归root用户所有,后续node-sass的安装脚本尝试创建目录时就会触发权限拒绝错误。下面是一步步的解决方法:
步骤1:清理现有错误的依赖文件
首先需要移除当前被root权限污染的node_modules和锁文件:
sudo rm -rf node_modules package-lock.json sudo npm cache clean --force
步骤2:修复项目目录的所有权
把项目目录的所有者从root改成你的普通用户(确保后续操作都用普通用户权限执行):
sudo chown -R $USER:$USER /var/www/npmtest
这里的$USER会自动替换成你当前登录的用户名,如果你明确知道用户名,也可以直接写(比如ubuntu)。
步骤3:重新执行npm install
现在不要用sudo,直接在项目根目录执行:
npm install
这时候npm会以你的普通用户权限运行,所有文件都会归你所有,node-sass的安装脚本也能正常创建需要的目录了。
可选:如果node-sass仍有问题
如果还是遇到node-sass的编译错误,可以尝试加上权限参数强制安装:
npm install node-sass --unsafe-perm=true --allow-root
不过这只是临时方案,更推荐的是保持项目目录权限正确,避免用sudo执行npm命令。
为什么之前的操作会出错?
用sudo运行npm会让整个安装过程以root用户身份执行,生成的文件和目录都属于root。即使你给了777权限,npm的一些内部脚本会做权限检查,或者尝试以非root用户身份操作文件,这就会触发EACCES错误。所以在前端依赖安装时,尽量避免使用sudo,保持项目目录属于当前普通用户是最佳实践。
内容的提问来源于stack exchange,提问作者CodeNinja
相关产品推荐
相关产品推荐

