【问题标题】:Ionic, npm and cordova commands all require sudo to workIonic、npm 和 cordova 命令都需要 sudo 才能工作
【发布时间】:2016-04-24 13:19:33
【问题描述】:

从我在一些论坛上看到的情况来看,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)。

每当我需要使用 ionic、npm 或 cordova 命令时,我总是必须将 sudo 放在它前面,否则我会收到“找不到 bash 命令”错误。我曾尝试使用此修复程序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

【问题讨论】:

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


    【解决方案1】:

    编辑(2018 年 8 月 28 日):

    我在多年前对终端不太熟悉时写了这篇文章并回答了这个问题。现在我更有经验了,我可以推荐更好的解决方案。避免不必要地使用 sudo 是一种很好的做法。

    我认为问题是由从 node JS 网站的安装程序安装 node JS 引起的。这个版本的 node JS 似乎以 root 身份在文件系统中写入各种文件,可能(并且不必要地)导致全局包需要 root 权限才能安装。

    理想的解决方案是从您的机器上完全删除从网站上的节点 JS 安装程序安装的节点 JS(请参阅https://stackabuse.com/how-to-uninstall-node-js-from-mac-osx/)。然后从命令行包管理器安装 node,例如 homebrew。


    原始答案 (2016)

    终于想出了一个解决办法,玩权限!希望我没有塞进任何东西。 (顺便说一句,我是终端菜鸟。)无论如何,这就是解决方案。

    在终端中运行此代码(您可能需要也可能不需要事先运行cd ..

    sudo chown -R $USER /usr/local/
    

    这会更改本地文件夹中所有内容的权限(因此-R 意味着递归)。 (我在 ionic 论坛的某个地方找到了这条线)。

    现在,你必须重新安装 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 可以正常运行!呜呜! 这个错误可能会再次出现,所以你必须再次运行那行代码。

    希望这对某人有所帮助!

    【讨论】:

    • 这个答案最终帮助了我,但有点像喷雾和祈祷。对我有用的更精确的方法是更新 Cordova packages 文件夹的权限。例如:sudo chown -R $USER /Users/<username>/.cordova/lib/npm_cache/cordova-ios/<version>/package/
    • 我很乐于助人!顺便说一句,在整个用户目录上运行 chown 似乎是一个更简单的解决方案,因为您不必 chown 很多东西。
    • 我只需要 chown 那个cordova-ios 目录
    • 哦,好的。对我来说,我不得不 chown 5 个文件夹。在 ionic 实验室创建项目给了我错误
    猜你喜欢
    • 2020-05-23
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2017-07-17
    • 2021-06-18
    • 2015-02-02
    • 1970-01-01
    相关资源
    最近更新 更多