Ionic,npm和cordova命令都需要sudo才能工作

时间:2016-01-19 07:07:31

标签: node.js bash cordova npm ionic-framework

根据我在某些论坛中看到的内容,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

1 个答案:

答案 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!那个错误可能会回来,所以你必须再次运行那行代码。

希望这有助于某人!