NPM/Cordova permissions Error: EACCES: permission denied, scandir
NPM/Cordova permissions Error: EACCES: permission denied, scandir
当我 运行 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'
您可以使用以下三个选项之一解决此问题:
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.
您应该在继续之前备份您的计算机。
选项 1:更改对 npm 默认目录的权限
1).找到npm目录的路径:
npm config get prefix
对于许多系统,这将是 /usr/local。
警告:如果显示的路径只是 /usr,请切换到选项 2,否则您会弄乱您的权限。
2).将 npm 目录的所有者更改为当前用户的名称(您的用户名!):
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
这会更改 npm 和一些其他工具(lib/node_modules、bin 和 share)使用的子文件夹的权限。
选项 2:将 npm 的默认目录更改为另一个目录
有时您不想更改 npm 使用的默认目录(即 /usr)的所有权,因为这可能会导致一些问题,例如,如果您与其他用户共享系统。
相反,您可以将 npm 配置为使用完全不同的目录。在我们的例子中,这将是我们主文件夹中的一个隐藏目录。
1).为全局安装创建一个目录:
mkdir ~/.npm-global
2). 配置 npm 以使用新的目录路径:
npm config set prefix '~/.npm-global'
3).打开或创建一个 ~/.profile 文件并添加此行:
export PATH=~/.npm-global/bin:$PATH
4).回到命令行,更新你的系统变量:
source ~/.profile
测试:在不使用 sudo 的情况下全局下载包。
npm install -g jshint
除了步骤 2-4,您还可以使用相应的 ENV 变量(例如,如果您不想修改 ~/.profile):
NPM_CONFIG_PREFIX=~/.npm-global
选项 3:使用包管理器来为您处理这个问题。
如果您在 Mac OS 上全新安装节点,您可以使用 Homebrew 包管理器完全避免此问题。 Homebrew 使用正确的权限设置开箱即用。
brew install node
对于 Mac 用户,如果您正在寻找快速答案,您可以编辑位于 [=13] 的 .npm
文件夹的权限=].
- 转到
.npm
父文件夹(以防止运行第二个命令在错误的地方)。
$ cd /Users/$(whoami)
- 运行 chmod 更改
.npm
文件夹的权限。
$ sudo chmod -R 777 .npm/*
我的案子就是这样解决的。
万一其他人带着一个 Mac cordova 环境到达,而这个环境已经无法修复,这是我唯一的解决方案(在经历了很多痛苦之后):
- 备份一切
- 删除所有 cordova 平台(警告:这将破坏您在平台内完成的任何自定义操作,因此会破坏备份)
- 全局卸载 cordova
- 卸载 npm;我只是使用了他们网站上的基本命令:sudo npm uninstall npm -g
- 安装 NVM
- 通过它,安装 Node 长期稳定
- 安装 cordova(不再需要 sudo)
- 获得你的项目目录的权限(我递归地完成了我的整个用户目录)
- 添加您的平台
- 在您的任何自定义设置中有所不同
- 找张舒服的椅子喝苏格兰威士忌
当我 运行 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'
您可以使用以下三个选项之一解决此问题:
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.
您应该在继续之前备份您的计算机。
选项 1:更改对 npm 默认目录的权限
1).找到npm目录的路径:
npm config get prefix
对于许多系统,这将是 /usr/local。
警告:如果显示的路径只是 /usr,请切换到选项 2,否则您会弄乱您的权限。
2).将 npm 目录的所有者更改为当前用户的名称(您的用户名!):
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
这会更改 npm 和一些其他工具(lib/node_modules、bin 和 share)使用的子文件夹的权限。
选项 2:将 npm 的默认目录更改为另一个目录
有时您不想更改 npm 使用的默认目录(即 /usr)的所有权,因为这可能会导致一些问题,例如,如果您与其他用户共享系统。
相反,您可以将 npm 配置为使用完全不同的目录。在我们的例子中,这将是我们主文件夹中的一个隐藏目录。
1).为全局安装创建一个目录:
mkdir ~/.npm-global
2). 配置 npm 以使用新的目录路径:
npm config set prefix '~/.npm-global'
3).打开或创建一个 ~/.profile 文件并添加此行:
export PATH=~/.npm-global/bin:$PATH
4).回到命令行,更新你的系统变量:
source ~/.profile
测试:在不使用 sudo 的情况下全局下载包。
npm install -g jshint
除了步骤 2-4,您还可以使用相应的 ENV 变量(例如,如果您不想修改 ~/.profile):
NPM_CONFIG_PREFIX=~/.npm-global
选项 3:使用包管理器来为您处理这个问题。
如果您在 Mac OS 上全新安装节点,您可以使用 Homebrew 包管理器完全避免此问题。 Homebrew 使用正确的权限设置开箱即用。
brew install node
对于 Mac 用户,如果您正在寻找快速答案,您可以编辑位于 [=13] 的 .npm
文件夹的权限=].
- 转到
.npm
父文件夹(以防止运行第二个命令在错误的地方)。
$ cd /Users/$(whoami)
- 运行 chmod 更改
.npm
文件夹的权限。
$ sudo chmod -R 777 .npm/*
我的案子就是这样解决的。
万一其他人带着一个 Mac cordova 环境到达,而这个环境已经无法修复,这是我唯一的解决方案(在经历了很多痛苦之后):
- 备份一切
- 删除所有 cordova 平台(警告:这将破坏您在平台内完成的任何自定义操作,因此会破坏备份)
- 全局卸载 cordova
- 卸载 npm;我只是使用了他们网站上的基本命令:sudo npm uninstall npm -g
- 安装 NVM
- 通过它,安装 Node 长期稳定
- 安装 cordova(不再需要 sudo)
- 获得你的项目目录的权限(我递归地完成了我的整个用户目录)
- 添加您的平台
- 在您的任何自定义设置中有所不同
- 找张舒服的椅子喝苏格兰威士忌