-bash:cordova:command not found; 或-bash:phonegap:找不到命令

我不打算提出一个问题,而是回答一个问题,因为我迄今为止在网上find了这个build议,而且我自己也是这样想的。 很高兴分享,对吧?


所以在命令行上,我这样做了:

sudo npm install -g cordova sudo npm install -g phonegap 

哪些工作正常,但是当我运行这些行中的任何一个:

 My-MacBook-Pro:~ username$ cordova My-MacBook-Pro:~ username$ phonegap 

我收到了这些消息:

 -bash: cordova: command not found -bash: phonegap: command not found 

为什么? 原来,我的/ usr / local / lib目录上的权限被设置为“everyone:No Access”。 我改变了“所有人:只读”,并再次尝试。

 My-MacBook-Pro:~ username$ cordova My-MacBook-Pro:~ username$ phonegap 

这次他们工作! 作为一个testing,我把它转回到“大家:无法访问”,看看它是否真的是问题。 这一次我得到了不同的信息:

 -bash: /usr/local/bin/cordova: Permission denied -bash: /usr/local/bin/phonegap: Permission denied 

结果是一样的,我不能通过命令行调用cordova或phonegap(我包括这些最后两个拒绝邮件,以防万一任何人在他们的search)。

我在Mac Os山狮。 经过多次尝试,发现解决scheme非常快。

在安装Cordova之前,请确保您是要安装到其中的文件夹的所有者。 打开terminal并键入:

 sudo chown -R $USER /usr/local sudo chmod -R 0775 /usr/local npm install -g cordova 

如果你安装了一个新版本的node.js,你仍然可以得到一些错误。 尝试删除npmcaching:

 sudo npm cache clear npm install -g cordova 

然后键入cordova你好运;)

编辑:这似乎是在特立独行,优胜美地,埃尔卡皮坦和塞拉利昂以及

您需要将“/ usr / local / share / npm / bin”目录添加到$ PATHvariables中。 打开你的terminal/命令行并input:

 export PATH=$PATH:/usr/local/share/npm/bin 

通过在terminal中运行以下命令来查看$Pathvariables:

 echo "$PATH" 

如果您没有看到cordova正在尝试安装的path,则需要修复安装位置。

跑:

  npm config get prefix 

OS X上的默认值是/usr/local ,这意味着npm会将二进制文件符号链接到/ usr / local / bin,这应该已经在PATH上。 如果您有不同的path,请将npmconfiguration为具有本地目录。

所以运行这个将其更改为/usr/local

  npm config set prefix /usr/local 

那是它构成了我。 学分转到: npm全局path前缀

我必须使用像这样的nodejs来调用phonegap命令…

 nodejs /usr/local/lib/node_modules/phonegap/bin/phonegap.js create my-app 

当我直接运行cordova命令使用

 /usr/local/lib/node_modules/cordova/bin/cordova 

它什么都不返回

我刚刚问了NPM的同一个问题,最近得到了一个答案( 更新到Mac OSX 10.9.4后没有findnpm命令 ),你也可以像我一样在这里应用它。 尝试这个:

sudo -s ln -s /usr/local/lib/node_modules/phonegap/bin/phonegap.js /bin/usr/cordova

它为我工作。

在OSX中:

在brew下安装npm之后,如果仍然没有find命令,我build议你检查你隐藏的〜/ .npm-packages / bin目录,看看里面是否有'cordova'。 你可以用下面的方法来做到这一点:

 ls ~/.npm-packages/bin | grep cordova 

如果你看到cordova,你只需要确保这个目录在你的path。 如果你使用的是bash,那么一定要用下面的方法编辑你的〜/ .bashrc(如果你使用的是zsh,编辑下面的文件〜/ .zshrc),在最后加上这一行(把EDIT_THIS_PUT_YOUR_USER_NAME_HEREreplace成你的实际用户名):

 export PATH=$PATH:/Users/EDIT_THIS_PUT_YOUR_USER_NAME_HERE/.npm-packages/bin 

之后,请input您刚刚编辑的文件,或者直接退出terminal并打开一个新文件。 如果你编辑了你的〜/ .bashrc,那么只需要input'source〜/ .bashrc',或者如果你使用zsh而不是bash,并且你编辑了〜/ .zshrc,那么只需要input'source〜/ .zshrc',你很好走。 你现在应该可以键入'cordova'并在屏幕上看到正确的输出。

您必须将path添加到bash文件中的cordova bin。

 /etc/profile ~/.bash_profile ~/.bash_login (if .bash_profile does not exist) ~/.profile (if .bash_login does not exist) 

尝试在编辑文件后closures并重新打开terminal。

npm安装后的二进制文件将位于/usr/local/share/npm/bin 。 随意将该path添加到您的系统的path,以使用它们

你应该更新你的环境variablespath,如果phonegap安装,那么你应该find它在:

/usr/local/lib/node_modules/phonegap/bin/

如果你find了这个path,那么把它添加到你的path。

所有没有为我工作,直到:

 sudo rm -R /usr/local/lib/node_modules/cordova npm install -g cordova 

对我来说,在OSX Yosemiti上用Homebrew安装节点时,Cordova软件包并没有在适当的/ usr / local / lib位置创build。 我不得不明确地将我的.npm-packages中的cordova文件夹复制到应该用homebrew安装的地方。

下面的命令为我工作:

 sudo cp ~/.npm-packages/lib/node_modules/cordova /usr/local/lib/node_modules/cordova 

对于Ubuntu用户,它位于~/.npm-global/bin

~/.bashrc添加下面的行就可以解决这个问题。

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

在我的情况下,问题是,npm前缀被设置为不同的path,cmd无法从中select。

我解决了这个问题

 npm config set prefix "/usr/local" 

在尝试这个之前,可以使用以下命令看到npm使用的实际前缀,

 npm config get prefix