jsk*_*dd3 5 linux macos file-permissions npm cordova
当我运行时,cordova plugin add cordova-plugin-geolocation我收到以下错误.我已尝试在此文件夹上启用777,将自己设置为所有者等.在这些情况下我不允许使用sudo,但我相信如果可以,那将解决问题.
Failed to install 'cordova-plugin-geolocation': Error: EACCES: permission denied, scandir '/Users/username/documents/core/myapp/app/platforms/ios/build/device/libCordova.a'
at Error (native)
at Object.fs.readdirSync (fs.js:952:18)
at GlobSync._readdir (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:275:41)
at GlobSync._readdirInGlobStar (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:254:20)
at GlobSync._readdir (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:263:17)
at GlobSync._processReaddir (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:135:22)
at GlobSync._process (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:130:10)
at GlobSync._processGlobStar (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:360:10)
at GlobSync._process (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:128:10)
at GlobSync._processGlobStar (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:363:10)
Error: EACCES: permission denied, scandir '/Users/username/documents/core/myapp/app/platforms/ios/build/device/libCordova.a'
Run Code Online (Sandbox Code Playgroud)
您可以使用以下三个选项之一解决此问题:
1).Change the permission to npm's default directory.
2).Change npm's default directory to another directory.
3).Install node with a package manager that takes care of this for you.
Run Code Online (Sandbox Code Playgroud)
您应该在继续前进之前备份计算机.
选项1:将权限更改为npm的默认目录
1).找到npm目录的路径:
npm config get prefix
Run Code Online (Sandbox Code Playgroud)
对于许多系统,这将是/ usr/local.
警告:如果显示的路径只是/ usr,请切换到选项2,否则您将弄乱您的权限.
2).将npm目录的所有者更改为当前用户的名称(您的用户名!):
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
Run Code Online (Sandbox Code Playgroud)
这会更改npm和其他一些工具(lib/node_modules,bin和share)使用的子文件夹的权限.
选项2:将npm的默认目录更改为另一个目录
有时您不想更改npm使用的默认目录(即/ usr)的所有权,因为这可能会导致一些问题,例如,如果您与其他用户共享系统.
相反,您可以配置npm以完全使用不同的目录.在我们的例子中,这将是我们的主文件夹中的隐藏目录.
1).为全局安装创建一个目录:
mkdir ~/.npm-global
Run Code Online (Sandbox Code Playgroud)
2).配置npm使用新的目录路径:
npm config set prefix '~/.npm-global'
Run Code Online (Sandbox Code Playgroud)
3).打开或创建一个〜/ .profile文件并添加以下行:
export PATH=~/.npm-global/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
4).回到命令行,更新你的系统变量:
source ~/.profile
Run Code Online (Sandbox Code Playgroud)
测试:在不使用sudo的情况下全局下载软件包.
npm install -g jshint
Run Code Online (Sandbox Code Playgroud)
您可以使用相应的ENV变量(例如,如果您不想修改〜/ .profile),而不是步骤2-4:
NPM_CONFIG_PREFIX=~/.npm-global
Run Code Online (Sandbox Code Playgroud)
选项3:使用包管理器为您处理此问题.
如果您在Mac OS上进行全新的节点安装,则可以使用Homebrew包管理器完全避免此问题.Homebrew使用正确的权限开箱即用.
brew install node
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4425 次 |
| 最近记录: |