根据我在某些论坛中看到的内容,sudo是我在这篇帖子New to ionic - can’t build for ios (9) on El Capitan, and sudo ionic is required, deprecated npmconf中运行sudo ionic emulate ios
时收到错误的原因。 (我正在运行El Capitan btw)。
每当我需要使用ionic,npm或cordova命令时,我总是必须将sudo
放在它前面,否则我会收到“bash command not found”错误。我试图使用此修复程序https://www.npmjs.com/package/npm-sudo-fix但它不起作用。这就是日志中发生的事情:
Dylans-MBP:Ionic Projects Dylan $ sudo npm install -g npm-sudo-fix
Password:
/usr/local/bin/npm-sudo-fix -> /usr/local/lib/node_modules/npm-sudo-fix/index.js
npm-sudo-fix@0.1.3 /usr/local/lib/node_modules/npm-sudo-fix
└── spawny@0.0.1 (cmdify@0.0.4)
Dylans-MBP:Ionic Projects Dylan$ sudo npm-sudo-fix
chown: /users/root/.npm: No such file or directory
答案 0 :(得分:14)
编辑(2018年8月28日):
我写这篇文章并回答很多年前,当时我对终端不是很熟悉。既然我更有经验,我可以推荐更好的解决方案。避免不必要的sudo使用是一种好习惯。
我认为问题是由安装程序从节点JS网站安装节点JS引起的。这个版本的节点JS似乎以root身份在文件系统中编写各种文件,可能(并且不必要地)导致全局包需要安装root权限。
理想的解决方案是从您的计算机上完全删除从网站上的节点JS安装程序安装的节点JS(请参阅https://stackabuse.com/how-to-uninstall-node-js-from-mac-osx/)。然后从命令行包管理器安装节点,例如homebrew。
原始答案(2016)
最后通过玩权限来提出解决方案!希望我没有填充任何东西。 (我是终极菜鸟。)无论如何,这是解决方案。
在终端中运行此代码(您可能需要或不必先运行cd ..
)
sudo chown -R $USER /usr/local/
这会更改本地文件夹中所有内容的权限(因此-R
表示递归)。 (我在离子论坛的某个地方发现了这条线。)
现在,您必须重新安装cordova和ionic
sudo npm install -g cordova
sudo npm install -g ionic
无论如何,对我来说,在我这样做之后,我可以输入ionic
而不会出现任何错误。如果我运行cordova
,我会在终端中得到这个。
/usr/local/lib/node_modules/cordova/node_modules/update-notifier/node_modules/configstore/index.js:53
throw err;
^
Error: EACCES: permission denied, open '/Users/Dylan/.config/configstore/update-notifier-cordova.json'
You don't have access to this file.
我做的是解决这个问题(打开一个新的终端窗口后):
sudo chown -R $USER Dylan
(Dylan是我的用户文件夹;替换为你的用户文件夹。此外,在运行该行之前,您可能必须执行cd ..
并修复该配置文件的权限。现在运行cordova
有效没错!Woot!那个错误可能会回来,所以你必须再次运行那行代码。
希望这有助于某人!