首页 > 解决方案 > 无法在 Mac 上安装 Ember Octane;NPM 和 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

所以我做了这里的建议并尝试安装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

我该怎么做才能让 Ember Octane 运行?

编辑:我设法使用 Homebrew 安装 NVM。nvm -v0.35.3。但我没有找到任何关于如何从这里继续的信息。尝试安装 Ember 时仍然遇到相同的错误。

标签: node.jsnpmember.jsember-clinvm

解决方案


您的问题在于您的评论:

npm bin/Users/<my-username>/node_modules/.binwhich ember/usr/local/bin/ember。现在了解PATH.

PATH包含多个目录,每当您输入推荐时,它将在所有这些目录中查找。现在你PATH肯定包含/usr/local/bin/,也许以后/Users/<my-username>/node_modules/.bin。它绝对应该包含 borth 目录。如果它不包含/Users/<my-username>/node_modules/.bin你应该立即修复的东西。

但是,现在您的主要问题是您基本上ember-cli在两个版本中安装了两次npm. 在你最初安装的时候你还ember没有使用nvm。在某些方面,使用npmwith 与nvm不使用它有很大不同。

如果您使用的nvm基本上所有内容都存在于您的$HOME(so /Users/<username>) 中。还有npm install -g将安装二进制文件的文件夹,它将是/Users/<my-username>/node_modules/.bin. 这实际上是一件好事,因为这意味着每个用户都可以在那里安装自己的东西,而无需sudo. 另一方面,如果您使用全局npm,您将安装与npm install -ginto一起安装的二进制文件/usr/local/bin/。但是,这需要sudo或更改某些权限。我们不知道你当时做了什么,也许你曾经用过.sudonvm/usr/local/bin/PATH /Users/<my-username>/node_modules/.bin

现在你应该做的是首先摆脱/usr/local/bin/ember。为此,您这样做ls -lisa /usr/local/bin/ember是因为这可能是到其他地方的符号链接。然后您检查此链接指向的位置并ember-cli从那里删除。仅rm -rf安装在那里的软件包可能是安全的。接下来删除符号链接/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


推荐阅读