snap store node js 不让我安装 angular cli

snap store node js 不让我安装 angular cli

我在 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

相关内容