【问题标题】:Why do I always need SUDO为什么我总是需要 SUDO
【发布时间】:2020-08-14 16:07:37
【问题描述】:

我有一台 Mac Book Pro 和我的操作系统 MacOS。我正在使用 ionic 进行编码,并且必须将所有命令与 SUDO 一起使用。我不想这样做。

ionic cordova platform rm ios
> cordova platform remove ios
/usr/local/lib/node_modules/cordova/node_modules/conf/node_modules/write-file-atomic/index.js:236
throw err
^

Error: EACCES: permission denied, open '/Users/kalemmacbookpro/Library/Preferences/insight-nodejs/insight-cordova.json.1908726309'
at Object.openSync (fs.js:458:3)
at Function.writeFileSync [as sync] (/usr/local/lib/node_modules/cordova/node_modules/conf/node_modules/write-file-atomic/index.js:212:13)
at Conf.set store [as store] (/usr/local/lib/node_modules/cordova/node_modules/conf/index.js:142:19)
at new Conf (/usr/local/lib/node_modules/cordova/node_modules/conf/index.js:44:14)
at new Insight (/usr/local/lib/node_modules/cordova/node_modules/insight/lib/index.js:40:35)
at new RelentlessInsight (/usr/local/lib/node_modules/cordova/src/telemetry.js:31:1)
at Object.<anonymous> (/usr/local/lib/node_modules/cordova/src/telemetry.js:39:15)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32) {
errno: -13,
syscall: 'open',
code: 'EACCES',
path: '/Users/kalemmacbookpro/Library/Preferences/insight-nodejs/insight-cordova.json.1908726309'
}
    [ERROR] An error occurred while running subprocess cordova.
    
    cordova platform remove ios exited with exit code 1.
    
    Re-running this command with the --verbose flag may provide more information.

但如果我将此代码与 SUDO 一起使用,一切正常。如何在没有 SUDO 的情况下使用所有离子代码?

【问题讨论】:

  • 你能检查它说你没有访问权限的文件的所有权吗?文件或包含目录之一是否由 root 或不是您的用户拥有,并且您的用户的权限受限?
  • 我已设置文件所有权和权限
  • 你设置了什么文件,你把它们设置成什么?我不熟悉 ionic,但这听起来像是一个问题,其中一些文件具有不适当的权限(可能由 root 拥有,而不是您的用户拥有),因此您必须以 root 身份运行它(使用sudo)才能获得访问它们,因此它创建的任何新文件都归 root 所有,随着越来越多的文件归 root 而不是你所有,随着时间的推移,整个问题变得越来越严重。这意味着您可能需要设置所有相关文件的所有权。

标签: macos ionic-framework ionic4


【解决方案1】:

安装软件包时可能会出现 EACCES 权限错误 全球范围内。如果是这种情况,可能需要设置 npm 才能运行 没有提升的权限。 - Resolving Permission Errors

避免权限问题的最佳方法是使用节点版本管理器重新安装 NodeJS 和 npm。

有关完整文档,请参阅nvm docs

1.) 安装 nvm。

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

2.) 新终端现在将使用 nvm。要验证,请打开一个新终端并运行以下命令。如果有打印,则安装成功。

$ command -v nvm

3.) 要下载并安装 NodeJS 的最新 LTS 版本,请运行:

$ nvm install --lts

4.) 将新安装的NodeJS设置为默认环境:

$ nvm alias default lts/*

5.) 新终端现在将使用 nvm 控制的 NodeJS。验证:

$ node -v  # will print the version installed above
$ which npm  # will print a path somewhere within the ~/.nvm folder

【讨论】:

猜你喜欢
  • 2020-10-11
  • 2018-12-15
  • 2023-04-04
  • 2011-02-13
  • 1970-01-01
  • 2023-04-02
  • 2010-12-08
  • 1970-01-01
  • 2015-08-23
相关资源
最近更新 更多