我想在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 -v
说0.35.3
。但是我没有找到有关如何从此处继续的任何信息。尝试安装Ember时仍然出现相同的错误。
答案 0 :(得分:4)
您的问题在于您的评论:
npm bin
说/Users/<my-username>/node_modules/.bin
。which 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
。将npm
与nvm
一起使用在某些方面与不使用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.
了。