通过npm

时间:2017-12-19 02:04:25

标签: node.js npm

我一直在尝试安装一个npm软件包,它已经抛出了一堆我不太熟悉的错误。 请注意,执行sudo npm install -g skpm 后会出现这些错误:

gyp ERR! configure error 
gyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/skpm/node_modules/keytar/build'
gyp ERR! System Darwin 17.3.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/skpm/node_modules/keytar
gyp ERR! node -v v8.9.1
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! keytar@4.1.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the keytar@4.1.0 install 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!     /Users/USERNAME/.npm/_logs/2017-12-19T01_53_44_910Z-debug.log

最初我认为我需要安装keytar来使其工作,但安装后我仍然有同样的错误。

3 个答案:

答案 0 :(得分:3)

避免使用sudo npm -g install 在gyp编译期间,你会一次又一次地遇到这样的问题。 修复权限是解决方案。

引自npm docs

  

您可以使用以下三个选项中的一个来解决此问题:

     
      
  1. 将权限更改为npm的默认目录。
  2.   
  3. 将npm的默认目录更改为另一个目录。
  4.   
  5. 使用程序包管理器安装Node,为您解决此问题。在继续前进之前,您应备份计算机。
  6.         

    选项1:将权限更改为npm的默认目录

         

    找到npm目录的路径:npm config get prefix对于许多系统,这将是/usr/local

         

    警告:如果显示的路径只是/usr,请切换到选项2或您   会弄乱你的权限。

         

    将npm&#39目录的所有者更改为当前用户的名称   (您的用户名!):

         

    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

         

    这会更改npm和其他一些工具(lib / node_modules,bin和share)使用的子文件夹的权限。

         

    选项2:将npm的默认目录更改为另一个目录

         

    有些时候你不想改变所有权   npm使用的默认目录(即/ usr),因为这可能会导致一些   问题,例如,如果您与其他用户共享系统。

         

    相反,您可以将npm配置为使用其他目录   共。在我们的例子中,这将是我们家中的隐藏目录   文件夹中。

         

    为全局安装创建一个目录:

         

    mkdir ~/.npm-global

         

    配置npm以使用新目录路径:

         

    npm config set prefix '~/.npm-global'

         

    打开或创建〜/ .profile文件并添加以下行:

         

    export PATH=~/.npm-global/bin:$PATH

         

    返回命令行,更新系统变量:

         

    source ~/.profile

         

    测试:在不使用sudo的情况下全局下载软件包。

         

    npm install -g jshint

         

    代替步骤2-4,您可以使用相应的ENV变量(例如,如果您不想修改~/.profile):

         

    NPM_CONFIG_PREFIX=~/.npm-global

         

    选项3 :使用包管理器为您解决此问题。

         

    如果您在Mac OS上重新安装Node,则可以避免这种情况   使用Homebrew包管理器完全解决问题。家酿   使用正确的权限设置开箱即用。

         

    brew install node

答案 1 :(得分:1)

通常会EACCES: permission denied尝试在不提供权限的情况下全局安装程序包(使用-g)。假设您使用sudo使用os,请尝试调用

sudo npm install -g skpm

或者,如果你不想要它全球

npm install skpm

答案 2 :(得分:1)

我发现了为什么没有安装skpm的问题。

确保安装x-code +命令行工具访问

这解决了问题并安装了SKPM。