Angular CLI安装错误

cal*_*e24 7 npm-install angular-cli

npm install -g angular-cli在MacOS上运行时遇到此错误:

npm ERR! node v6.9.2
npm ERR! npm  v3.10.9
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/apple/npm-debug.log
Run Code Online (Sandbox Code Playgroud)

Rob*_*rty 13

当您npm install -g在任何平台上使用并获得时EACCES,您正在写入您没有写入权限的目录.

有些人可能会建议使用sudo,但这将导致将来出现更多问题.该NPM文档提供了步骤来解决这个问题.

我强烈推荐选项3,使用Homebrew安装Node.

  • 这是一个很好的答案。按照 npm 文档链接中提供的步骤,我能够解决该问题。(我删除了一个现有节点,并按照建议通过 nvm 重新安装了它) (2认同)

小智 7

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

    mkdir ~/.npm-global

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

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

  3. 创建一个~/.profile文件

  4. 将此行添加到您的新~/.profile文件中:

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

  5. 更新您的系统变量:

    source ~/.profile

参考:解决全局安装软件包时的 EACCES 权限错误


小智 6

警告:通过键入检查$(npm config get prefix)是否未指向/usrecho $(npm config get prefix)

我是这样解决的

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

为我工作

  • 这是一个非常糟糕的主意。您不应该更改 /bin /share 的所有权 (2认同)

Ayu*_*yar 6

尝试使用此方法:在命令行上,在您的主目录中,为全局安装创建一个目录:

mkdir ~/.npm-global
Run Code Online (Sandbox Code Playgroud)

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

npm config set prefix '~/.npm-global'
Run Code Online (Sandbox Code Playgroud)

在您首选的文本编辑器中,打开或创建一个 ~/.profile 文件并添加以下行:

export PATH=~/.npm-global/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

在命令行上,更新您的系统变量:

source ~/.profile
Run Code Online (Sandbox Code Playgroud)

在不使用 sudo 的情况下测试全局安装包。现在运行npm install -g @angular/cli它应该可以工作。