我在 Ubuntu 20.04 上,我从 snap store 安装了节点。现在,当我尝试安装 angular cli 时,它不允许我这样做
2020/03/28 11:51:57.975509 cmd_run.go:884: WARNING: cannot create user data directory: cannot create "/nonexistent/snap/node/2622": mkdir /nonexistent: permission denied
cannot create user data directory: /nonexistent/snap/node/2622: Permission denied
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @angular/[email protected] postinstall: `node ./bin/postinstall/script.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @angular/[email protected] 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! /root/.npm/_logs/2020-03-28T06_22_03_201Z-debug.log
有人知道吗,这看起来像是权限问题。我如何将 ng cli 安装到我的 20.04 系统中。
答案1
这里的问题是,snap 不允许已安装的 snap 包写入/usr/local
。不幸的是,这是全局安装的 npm 包的默认位置。
您可以通过 3 个简单的步骤解决此问题,将默认位置从全局安装的 npm 包更改为一个目录,其中允许 snap(在本例中为节点)进行写入。
首先,我们为将来全局安装的 npm 包创建新目录:
mkdir ~/.local/npm
现在我们需要将新创建的文件夹添加到我们的PATH
。为此,打开或创建一个~/.bashrc
文件并添加以下行:
export PATH=~/.local/npm/bin:$PATH
您是否注意到了新/bin
文件夹并想知道它为什么在这里? Npm 将创建它,它将包含全局安装包的可执行文件/系统链接。 没有它,您将无法ng
在终端中运行。
最后一步是覆盖默认的 npm 全局位置(npm 称之为“前缀”):
npm config set prefix '~/.local/npm'
现在您可以全局安装 npm 包。npm install -g @angular/cli
现在应该可以工作了。
要测试一切是否正常运行,请ng version
在使用 npm 全局安装后运行。
我使用以下来源作为我的答案:https://github.com/mixonic/docs.npmjs.com/blob/master/content/getting-started/fixing-npm-permissions.md
答案2
尝试使用 sudo 运行安装命令?我有时使用 NPM 时会遇到这个问题,使用 sudo 快速踢一下后背通常可以解决问题。
答案3
我正在使用
sudo npm install -g @angular/cli
在我从中删除 sudo 之后,它继续安装 angular。
npm install -g @angular/cli