EACCES: permission denied,mkdir … npm install 安装依赖问题解决

简介: 可是我们看到上面的提示发现,报的是permission denied,这就很奇怪,为什么我是root用户了,还会没有权限呢?

强哥最近在用hugeGraph图库做二次开发的时候,在打包的时遇到前端项目打包失败的问题:


> cwebp-bin@4.0.0 postinstall /home/hugegraph/my-hugegraph-studio/studio-ui/node_modules/cwebp-bin> node lib/install.js
  ⚠ EACCES: permission denied, mkdir '/home/hugegraph/my-hugegraph-studio/studio-ui/node_modules/cwebp-bin/vendor'  ⚠ cwebp pre-build test failed  ℹ compiling from source/home/hugegraph/my-hugegraph-studio/studio-ui/node_modules/onetime/index.js:15throw new Error(fnName + ' can only be called once.');        ^Error: callback() can only be called once.    at callback (/home/hugegraph/my-hugegraph-studio/studio-ui/node_modules/onetime/index.js:15:11)    at /home/hugegraph/my-hugegraph-studio/studio-ui/node_modules/download/index.js:156:5    at ConcatStream.<anonymous> (/home/hugegraph/my-hugegraph-studio/studio-ui/node_modules/concat-stream/index.js:37:43)


强哥当时是用root用户执行npm install命令进行依赖安装的。


可是我们看到上面的提示发现,报的是permission denied,这就很奇怪,为什么我是root用户了,还会没有权限呢?


经过一番google之后,找到一个解决方案:


16.png


在安装命令后添加--unsafe-perm=true。于是便尝试了一下:


npm install --unsafe-perm=true


可是,依然会报上面的错误,这就很让人头疼。难不成没办法二次开发了?


在经过一番瞎鼓捣之后,强哥先试着单独安装没有安成功的那个包:


npm install cwebp-bin@4.0.0


不行,加上上面的配置:


npm install cwebp-bin@4.0.0 --unsafe-perm=true


还是不行,在山穷水复疑无路时,使用如下命令居然柳暗花明又一村:


npm i cwebp-bin@4.0.0 --unsafe-perm=true


欣喜若狂。哈哈,既然这样能成,为了不一个个的安装依赖包,那就一鼓作气,我们改成用这个命令install试试:


npm i --unsafe-perm=true


结果果然不出意料,安装(下载包依赖)成功了。


嘿嘿,问题解决了,那么我们就来总结下原因吧。从上面来看,我们弄清楚两点就行啦:


  • --unsafe-perm=true的意思
  • npm i 和 npm install的区别


--unsafe-perm=true的意思官网解释:


unsafe-perm§Default: false if running as root, true otherwiseType: BooleanSet to true to suppress the UID/GID switching when running package scripts. If set explicitly to false, then installing as a non-root user will fail.


摘自网络的解释就是:


就是说 npm 出于安全考虑不支持以 root 用户运行,即使你用 root 用户身份运行了,npm 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限。这样的话如果你脚本里有一些需要权限的操作,比如写文件(尤其是写 /root/.node-gyp),就会崩掉了。为了避免这种情况,要么按照 npm 的规矩来,专门建一个用于运行 npm 的高权限用户;要么加 --unsafe-perm 参数,这样就不会切换到 nobody 上,运行时是哪个用户就是哪个用户,即使是 root。


https://segmentfault.com/q/1010000019365121#answer-1020000019375277


所以,看到这个解释,还是觉得挺奇怪,不过暂且这么理解吧,强哥也没有切换到普通用户试着install,哈哈原谅我的懒惰。


也可以全局设置一下:npm config set unsafe-perm(针对当前用户的)npm config -g set unsafe-perm(全局的)这样以后就不用加这个参数进行install啦。


npm i 和 npm install的区别其实,但是柳暗花明又一村的时候,也确实刷新了强哥的三观(原谅后端渣渣的无知):难道npm i 不单单是npm install的缩写吗?我学的时候好像就是这么解释的啊。


答案是确实不单单是:


实际使用的区别点主要如下(windows下):


1. 用npm i安装的模块无法用npm uninstall删除,用npm uninstall i才卸载掉

2. npm i会帮助检测与当前node版本最匹配的npm包版本号,并匹配出来相互依赖的npm包应该提升的版本号

3. 部分npm包在当前node版本下无法使用,必须使用建议版本

4. 安装报错时intall肯定会出现npm-debug.log 文件,npm i不一定


https://blog.csdn.net/chern1992/article/details/79193211


好啦,弄明白这些,这个问题就算告一段落啦。

相关文章
|
2月前
|
缓存 JavaScript 前端开发
拿下奇怪的前端报错(三):npm install卡住了一个钟- 从原理搞定安装的全链路问题
本文详细分析了 `npm install` 过程中可能出现的卡顿问题及解决方法,包括网络问题、Node.js 版本不兼容、缓存问题、权限问题、包冲突、过时的 npm 版本、系统资源不足和脚本问题等,并提供了相应的解决策略。同时,还介绍了开启全部日志、使用替代工具和使用 Docker 提供 Node 环境等其他处理方法。
1172 0
9-14|npm install --global windows-build-tools 安装太慢了,能够指定国内源
9-14|npm install --global windows-build-tools 安装太慢了,能够指定国内源
|
3月前
|
缓存 JavaScript 前端开发
8种方法解决vue创建项目报错:command failed: npm install --loglevel error
该文章提供了八种解决Vue项目创建时遇到的`command failed: npm install --loglevel error`错误的方法,包括清理缓存、更换npm源、重新安装Node.js等措施。
8种方法解决vue创建项目报错:command failed: npm install --loglevel error
|
4月前
optional install error: Error: Unsupported URL Type: npm:vue-loader@^16.1.0
optional install error: Error: Unsupported URL Type: npm:vue-loader@^16.1.0
53 3
|
4月前
|
JavaScript
【Deepin 20系统】Jupyter notebook解决ValueError: Please install Node.js and npm before continuing installa
文章讨论了在Deepin 20系统上安装Jupyter Notebook的debug插件时出现的"ValueError: Please install Node.js and npm before continuing installation"错误,并提供了使用conda安装Node.js的解决方法。
140 1
|
4月前
NPM——Electron failed to install correctly, please delete node_modules/electron and try
NPM——Electron failed to install correctly, please delete node_modules/electron and try
318 0
|
4月前
|
开发工具 git
IDEA——npm install 没有生成node_modules目录
IDEA——npm install 没有生成node_modules目录
296 0
|
5月前
|
JavaScript
npm install 报错 import sys; print“%s.%s.%s”% sys.version_info[ :3] ;
npm install 报错 import sys; print“%s.%s.%s”% sys.version_info[ :3] ;
148 3
|
6月前
|
Dart JavaScript 前端开发
npm install node-sass 安装失败的解决方案:利用国内镜像加速安装
npm install node-sass 安装失败的解决方案:利用国内镜像加速安装
3198 1
|
6月前
|
JavaScript
蓝易云 - npm install报错问题解决合集
以上是一些常见的npm install错误及其解决方法,希望对你有所帮助。
104 0