无法在 Mac 上安装 Ember Octane; NPM 和 NVM 的问题

Can't install Ember Octane on Mac; problems with NPM and NVM

我想用 MacOS Catalina 在我的 Mac 上安装最新版本的 Ember。我实际上以为我几周前就这样做了(这台机器只有三个月大),但是 ember -v 说 Ember CLI 的版本是 3.9,也就是 13 个月大。

所以我在终端输入npm install -g ember-cli,但是我得到一个错误:

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   stack:
npm ERR!    "Error: EACCES: permission denied, access '/usr/local/lib/node_modules'",
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
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

所以我按照建议 here 进行了安装 nvm:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

有一些输出,一切正常,但是当我尝试使用 command -v nvm 验证我的安装时,根本没有输出。

npm uninstall ember-cli 给我 up to date in 0.031s.

我该怎么做才能得到EmberOctane运行?

edit:我设法使用 Homebrew 安装了 NVM。 nvm -v0.35.3。但我没有找到有关如何从这里继续的任何信息。我在尝试安装 Ember.

时仍然遇到同样的错误

你的问题出在你的评论上:

npm bin says /Users/<my-username>/node_modules/.bin. which ember says /usr/local/bin/ember. Now it is important to understand the PATH.

您的 PATH 包括多个目录,每当您输入一个推荐时,都会在所有这些目录中查找它。现在你的 PATH 肯定包含 /usr/local/bin/ 并且可能稍后包含 /Users/<my-username>/node_modules/.bin。它肯定 应该 包含 borth 目录。如果 包含 /Users/<my-username>/node_modules/.bin 那是你应该立即修复的问题。

然而,现在您的主要问题是您基本上在两个版本和两个版本的 npm 中安装了 ember-cli 两次。在您最初安装 ember 时,您还没有使用 nvm。将 npmnvm 一起使用在某些方面与不使用它有很大不同。

如果您使用 nvm,基本上一切都在您的 $HOME 中(所以 /Users/<username>)。 npm install -g 将安装二进制文件的文件夹也是 /Users/<my-username>/node_modules/.bin。这实际上是一件好事,因为这意味着每个用户都可以在那里安装自己的东西,而无需 sudo。另一方面,如果您使用全局 npm,您会将使用 npm install -g 安装的二进制文件安装到 /usr/local/bin/ 中。然而,这需要 sudo 或更改某些权限。我们不知道你当时做了什么,也许你试过一次sudo,从那以后这个版本基本上覆盖了你以后可能用[=23安装的所有其他版本=] 因为 /usr/local/bin/PATH 之前 /Users/<my-username>/node_modules/.bin.

现在你应该做的是先摆脱掉/usr/local/bin/ember。为此你做 ls -lisa /usr/local/bin/ember 因为这可能是对其他地方的象征性 link 。然后检查此 link 通向何处并从那里删除 ember-cli。只 rm -rf 安装在那里的软件包可能是安全的。接下来删除符号 link /usr/local/bin/ember 本身。然后再次运行 which ember。不,这应该要么失败,要么指向不同的路径。如果它指向不同的路径,您可以验证它是否是您想要的版本(在 /Users/<my-username>/node_modules/.bin 中)。如果失败,您应该验证 /Users/<my-username>/node_modules/.bin 实际上在您的 PATH 中并且 ember 存在于 /Users/<my-username>/node_modules/.bin.


除此之外,我想提一下 ember-cli 还有一些有趣的细节:如果您 运行 ember-cli 在 ember 项目中,它将搜索 ember-cli 安装在这个项目中并启动它。所以全局安装的 ember-cli 版本实际上并不重要。它基本上只与 ember new 有关。但是,对于 ember new,您可能要考虑使用 npx,因为那样您将始终 运行 当前版本。所以你可以做 npx ember-cli new my-app.