为什么我总是需要 SUDO

Why do I always need SUDO

我有 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 的情况下使用所有离子代码?

EACCES permission errors can occur when packages are installed globally. If this is the case, npm may need to be set up to operate without elevated permissions. - 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-controlled NodeJS。验证:

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