无法通过 npm sudo npm i
安装 node-sass 包,我一直在尝试通过 sudo npm i -g node-sass --unsafe-perm=true 来解决--allow-root
但是没有效果。 Chmod 777 要么。
我认为有些东西具有 npm 权限,但我不知道
日志:
gyp verb build dir attempting to create "build" dir: /home/michael/Desktop/react/node_modules/node-sass/build
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/home/michael/Desktop/react/node_modules/node-sass/build'
gyp ERR! System Linux 4.15.0-47-generic
gyp ERR! command "/usr/bin/node" "/home/michael/Desktop/react/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /home/michael/Desktop/react/node_modules/node-sass
gyp ERR! node -v v11.14.0
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@1.2.7 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.11.0 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.11.0 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! /home/michael/.npm/_logs/2019-04-13T17_21_20_424Z-debug.log
最佳答案
作为一般建议,切勿使用 sudo 运行 npm install,因为它会创建 root 而不是您的用户拥有的本地文件,我认为您应该尝试以下操作:
- 首先更改文件夹的所有者:
chown -R yourusername:yourusername/home/michael/Desktop/react/
,或者如果您不想输入用户名:chown -R $USER:$USER/home/michael/Desktop/react/
- 然后运行:
npm install node-sass
,不要使用sudo
注意:当您安装本地包时这很好,但对于全局安装,请阅读下面的更新
更新
永远不要运行 sudo npm install
和 sudo npm anything
阅读此 article想知道为什么
虽然使用chown
或chmod
更改权限有点不错并且有效,但是这不是安装包时的最佳方法全局,如果您使用的是 Linux 或 OSX,我建议您阅读 npm 文档上的这篇文章 here ,然后使用 nvm
,或者手动更改 npm 的默认目录。
更改 npm 的默认目录
为此,您需要执行以下步骤:
在命令行中,在您的主目录中,为全局安装创建一个目录:
mkdir ~/.npm-global
配置 npm 以使用新的目录路径:
npm config set prefix '~/.npm-global'
在您首选的文本编辑器中,打开或创建一个
~/.profile
文件 [或者您可以编辑~/.bashrc
或~/.zshrc
文件而不是.profile
如果你认为合适]并添加这一行:export PATH=~/.npm-global/bin:$PATH
在命令行上,更新您的系统变量:
source ~/.profile # or source ~/.bashrc, # source ~/.zshrc, depends on where you exported the path
要测试您的新配置,请在不使用 sudo 的情况下全局安装一个包:
npm install -g jshint
你可以全局安装 node-sass :
npm install -g node-sass
现在您应该不会收到权限错误,因为这应该可以解决在全局安装包时出现的 EACCES 权限错误。
警告
LibSass
和 node-sass
已弃用。虽然他们将继续无限期地接收维护版本,但没有计划添加额外的功能或与任何新的 CSS 或 Sass 功能兼容,仍在使用它的项目应该转移到 Dart Sass。
您可以阅读有关此主题的更多信息 here
请改用 sass,迁移到 Dart Sass 很简单 并且这两个包都公开了相同的 JavaScript API,以安装 dart sass:
npm install sass
或全局:
npm install -g sass
关于javascript - Npm 错误 "Error: EACCES: permission denied, mkdir ' ../node-sass/build'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55668065/