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

时间:2020-05-20 10:17:39

标签: node.js npm ember.js ember-cli nvm

我想在Mac上使用MacOS Catalina安装最新版本的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

如何使Ember Octane运行?

edit :我设法使用Homebrew安装了NVM。 nvm -v0.35.3。但是我没有找到有关如何从此处继续的任何信息。尝试安装Ember时仍然出现相同的错误。

1 个答案:

答案 0 :(得分:4)

您的问题在于您的评论:

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。将npmnvm一起使用在某些方面与不使用nvm的情况大不相同。

如果您使用的是$HOME,则基本上所有内容都保存在/Users/<username>中(因此npm install -g)。也是/Users/<my-username>/node_modules/.bin将安装二进制文件的文件夹,它将是sudo。这实际上是一件好事,因为这意味着每个用户都可以在没有npm的情况下在那里安装自己的东西。另一方面,如果您使用全局npm install -g,则会将与/usr/local/bin/一起安装的二进制文件安装到sudo中。但是,这需要sudo或更改一些权限。我们不知道您当时所做的事情,也许您曾经使用nvm 尝试过一次,此后该版本基本上覆盖了以后可以使用/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,因为这样您将始终运行当前版本。这样您就可以Error: Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API with React Navigation 5? See https://reactnavigation.org/docs/upgrading-from-4.x for migration guide. 了。