解决服务器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)