【问题标题】:Npm error "Error: EACCES: permission denied, mkdir '../node-sass/build'"Npm 错误“错误:EACCES:权限被拒绝,mkdir '../node-sass/build'”
【发布时间】:2019-04-13 17:22:31
【问题描述】:

无法通过 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

【问题讨论】:

    标签: javascript node.js npm


    【解决方案1】:

    作为一般建议,切勿使用 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

    注意:安装本地软件包时这很好,但对于全局安装,请阅读下面的更新


    更新

    虽然使用 chownchmod 更改权限还不错,但它不是全局安装软件包时的最佳方法,如果您使用的是 Linux 或 OSX,我建议您阅读 npm 文档 here 上的这篇文章,并使用 nvm,或手动更改 npm 的默认目录。

    更改 npm 的默认目录

    为此,您需要执行以下步骤:

    1. 在命令行中,在您的主目录中,为全局安装创建一个目录:

      mkdir ~/.npm-global
      
    2. 配置 npm 以使用新的目录路径:

      npm config set prefix '~/.npm-global'
      
    3. 在您首选的文本编辑器中,打开或创建一个~/.profile 文件[或者,如果您认为合适,您可以编辑~/.bashrc~/.zshrc 文件而不是.profile] 并添加以下行:

      export PATH=~/.npm-global/bin:$PATH
      
    4. 在命令行上,更新你的系统变量:

      source ~/.profile  
      
      # or source ~/.bashrc,
      # source ~/.zshrc, depends on where you exported the path
      
    5. 要测试您的新配置,请在不使用 sudo 的情况下全局安装软件包:

      npm install -g jshint 
      

    你可以全局安装 node-sass :

        npm install -g node-sass
    

    现在你不应该得到权限错误,因为这应该解决全局安装包时的 EACCES 权限错误。


    警告

    LibSassnode-sass 已弃用。虽然他们将继续无限期地接收维护版本,但没有计划添加额外的功能或与任何新的 CSS 或 Sass 功能兼容,仍然使用它的项目应该转移到 Dart Sass。 您可以阅读有关此主题的更多信息here

    请改用 sass,迁移到 Dart Sass 很简单 并且两个包都暴露了相同的 JavaScript API,来安装 dart sass :

      npm install sass 
    

    或全局:

      npm install -g sass 
    

    【讨论】:

    • no , 下次直接用 : npm install node-sass 代替 : sudo npm install node-sass , 上面的 bash 命令只是修复了使用 sudo npm -i node 导致的 EACCESS errno 1 -sass
    • 嗨。我遇到了这个问题,我全局安装了 node-sass,当我需要在 sass 中时,它只会给出一个错误,比如要导入 Sass 文件,你首先需要安装 node-sass。因此,每次我使用 sass 时都需要安装 node-sass 吗?还是有办法预防?
    • 工作就像一个魅力。
    • 如果您遇到illegal group name 问题,请执行sudo chown -R <username>: /location
    • 记得在<username>: 后面加空格@^
    【解决方案2】:

    我按照@WaLid LamRaoui 的回答按照说明进行操作,因为我也使用 sudo 运行 npm install。在更改文件夹所有者方面似乎已经完成了技巧,但是在尝试运行 npm install 时仍然出现错误。然后我意识到另一个问题与我的缓存文件夹有关,该文件夹包含根拥有的文件,所以对于那些在遵循批准的答案后也有这个问题的人,我只是这样做了:

    sudo chown -R 1003:1003 "/home/<username>/.npm"
    

    在这之后我运行了npm install,它运行良好。

    【讨论】:

      【解决方案3】:

      什么都不做.. 只需添加--unsafe-perm 即可

      给它不安全的访问权限。

      所以,假设你之前安装了 bcrypt 库

      sudo npm install --save bcrypt
      

      那么现在写

      sudo npm install --unsafe-perm --save bcrypt
      

      你就完成了。

      【讨论】:

        【解决方案4】:

        我通过运行解决了这个问题

        sudo npm install -g --unsafe-perm node-sass
        

        【讨论】:

          猜你喜欢
          • 2023-03-25
          • 2019-10-28
          • 2018-03-01
          • 2019-02-13
          • 1970-01-01
          • 1970-01-01
          • 2021-07-22
          • 2018-03-08
          • 2018-12-15
          相关资源
          最近更新 更多