错误:EACCES:权限被拒绝,访问 '/usr/local/lib/node_modules/ ANGULAR

Sim*_*ona 2 node.js npm angular

我正在尝试生成一个新的 Angular 项目:

npm install -g @angular/cli
Run Code Online (Sandbox Code Playgroud)

并弹出一个错误,我不知道如何解决:

npm ERR! code EACCES
npm ERR! syscall access
npm ERR! path /usr/local/lib/node_modules/@angular/cli/node_modules/@schematics/update/node_modules/npm-package-arg/node_modules/semver
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules/@angular/cli/node_modules/@schematics/update/node_modules/npm-package-arg/node_modules/semver'
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules/@angular/cli/node_modules/@schematics/update/node_modules/npm-package-arg/node_modules/semver']
npm ERR!   stack:
npm ERR!    'Error: EACCES: permission denied, access \'/usr/local/lib/node_modules/@angular/cli/node_modules/@schematics/update/node_modules/npm-package-arg/node_modules/semver\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path:
npm ERR!    '/usr/local/lib/node_modules/@angular/cli/node_modules/@schematics/update/node_modules/npm-package-arg/node_modules/semver' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/simonanikolova/.npm/_logs/2020-07-04T16_47_21_985Z-debug.log
Run Code Online (Sandbox Code Playgroud)

其他一些可能与问题相关的具体事情:

  • 我在 Mac OS 上有两个登录名:管理员用户和个人用户

  • macOS Catalina 版本:10.15.5

  • npm 版本:6.14.5

  • 打字稿版本:3.5.3

  • 角度版本:

    Angular CLI:9.0.0 节点:10.16.1 操作系统:darwin x64

    角度:未定义......常春藤工作区:

    包版本@angular-devkit/architect 0.900.0(仅cli)@angular-devkit/core 9.0.0(仅cli)@angular-devkit/schematics 9.0.0(仅cli)@schematics/angular 9.0。 0 (cli-only) @schematics/update 0.900.0 (cli-only) webpack 4.43.0

另外:在我研究如何解决这个问题的过程中,我试图改变我的文件权限:我切换到我的管理员用户并在终端中输入:

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

如果有人可以帮助我,我会很高兴!谢谢!

小智 6

如果您确实使用了手动安装,那么一旦您使用 sudo 安装了一个软件包,您就必须继续使用它来安装它们。

解决您的情况可能会更改您的NPM 的默认文件夹

为了最大限度地减少权限错误的可能性,您可以将 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
  • 您可以使用相应的 ENV 变量代替步骤 2-4(例如,如果您不想修改 ~/.profile):NPM_CONFIG_PREFIX=~/.npm-global

另一种方法可能是使用节点管理器包 (nvm, n) 重新安装 NPM