-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中运行以下命令来查看$Path
variables:
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