2017-07-23 251 views
4

当我运行cordova plugin add cordova-plugin-geolocation时收到以下错误。我已经试过在这个文件夹上启用777,将自己设置为拥有者等。在这些情况下,我不允许使用sudo,但我相信如果我能解决问题。NPM /科尔多瓦权限错误:EACCES:权限被拒绝,scandir

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

首先你必须告诉我们你正在使用的cordova和插件的版本。此外,它只发生在这个特定的插件添加或所有? – Gandhi

+0

@甘地我修正了它。我所要做的只是重新安装cordova而不使用sudo – jskidd3

+0

@Gandhi我提到这是一个权限错误,一般来说会排除Cordova的版本或特定的插件相关 – jskidd3

回答

6

NPM issue's

您可以修复使用三个选项这个问题:

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).Find的路径,故宫的目录:

npm config get prefix 

对于许多系统,这将是/ usr /本地。

警告:如果显示的路径只是/ usr,请切换到选项2,否则您会弄乱您的权限。

2).Change 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).Configure NPM以使用新的目录路径:

npm config set prefix '~/.npm-global' 

3)。开或创建〜/配置文件并加入这行:

export PATH=~/.npm-global/bin:$PATH 

4).Back在命令行上,更新系统变量:

source ~/.profile 

测试:在不使用sudo的情况下全局下载软件包。

npm install -g jshint 

除步骤2-4外,您还可以使用相应的ENV变量(例如,如果您不想修改〜/。配置文件):

NPM_CONFIG_PREFIX=~/.npm-global 

选项3:使用一个软件包管理器为您处理此问题。

如果您在Mac OS上进行全新节点安装,您可以使用Homebrew软件包管理器完全避免此问题。 Homebrew以正确的权限开箱即用。

brew install node 
+0

我欣赏你的详细答案,但我解决这个问题,只需卸载科尔多瓦,然后重新安装它,而不使用'sudo' – jskidd3

+0

这很好,我听到你我们想要的解决方案就是它..继续前进 – Kondal

+0

谢谢!我已经upvoted – jskidd3

相关问题