解决服务器root用户执行 npm install node-sass --save -dev或install或install nuxt报错

问题描述:

由于公司要切换服务器,在本地执行
npm install css-loader node-sass postcss-loader sass-loader style-loader --save -dev
npm install
npm install nuxt --save
都可以很好的执行.
但是切换到服务器后,在服务器执行报错


报错信息:

gyp ERR! configure error 
gyp ERR! stack Error: EACCES: permission denied, mkdir '/home/ackh_dcc/nuxt_dcc/node_modules/node-sass/.node-gyp'
gyp ERR! System Linux 3.10.0-862.el7.x86_64
gyp ERR! command "/usr/local/nodejs/bin/node" "/home/ackh_dcc/nuxt_dcc/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /home/ackh_dcc/nuxt_dcc/node_modules/node-sass
gyp ERR! node -v v14.15.1
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok 
Build failed with error code: 1
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.14.1 postinstall: node scripts/build.js
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the node-sass@4.14.1 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-12-05T00_07_54_734Z-debug.log

原因:

其实很简单,就是无法创建文件导致的EACCES: permission denied, mkdir ‘/home/ackh_dcc/nuxt_dcc/node_modules/node-sass/.node-gyp’

简而言之权限问题

就是说 npm 出于安全考虑不支持以 root 用户运行,即使你用 root 用户身份运行了,npm 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限。这样的话如果你脚本里有一些需要权限的操作,比如写文件(尤其是写 /root/.node-gyp),就会崩掉了。


解决方法:

为了避免这种情况,要么按照 npm 的规矩来,专门建一个用于运行 npm 的高权限用户;要么加 --unsafe-perm 参数,这样就不会切换到 nobody 上,运行时是哪个用户就是哪个用户,即是 root。

例如:
[root@ackh-01 nuxt_dcc]# npm install --unsafe-perm
[root@ackh-01 nuxt_dcc]# npm install nuxt --save --unsafe-perm
[root@ackh-01 nuxt_dcc]# npm install css-loader node-sass postcss-loader sass-loader style-loader --save -dev --unsafe-perm

个人提示:

npm 安装 node-sass 网速慢的 可以 运行 npm config set registry https://registry.npm.taobao.org
然后 编辑 ~/.npmrc 加入下面内容
registry=https://registry.npm.taobao.org
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
phantomjs_cdnurl=http://npm.taobao.org/mirrors/phantomjs
ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶孤崖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值