-bash:cordova:命令未找到;或-bash:phonegap:命令未找到

时间:2013-07-31 16:02:17

标签: cordova

我不会问一个问题,但回答一个问题,因为到目前为止我已经在网上找到了这个建议,而且我自己也想出了这个建议。分享很好,对吧?


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

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

这次他们工作了!作为测试,我把它变回“每个人:无法访问”,看看它是否真的是问题所在。这次我收到了不同的消息:

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

虽然结果是一样的,我无法通过命令行调用cordova或phonegap(我包括最后两个拒绝消息,以防万一有人搜索它们。)

18 个答案:

答案 0 :(得分:64)

我在Mac Os Mountain Lion上。经过多次尝试,结果证明解决方案很快。

在安装Cordova之前,请确保您是要安装的文件夹的所有者。打开终端并输入:

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

如果您安装了新版本的node.js,您仍可能会收到一些错误。尝试删除npm cache:

sudo npm cache clear
npm install -g cordova

然后输入cordova并祝你好运;)

编辑:现在更新为使用macOs Mojave。

注意:Mojave不允许您完全更改/usr/local/的所有权,抛出错误

chown: /usr/local: Operation not permitted

修复非常简单,我们只需要指定node_modules子文件夹的路径。

此更改还将修复安装许多其他常用软件包时的类似常见问题。

答案 1 :(得分:13)

通过在终端中运行以下内容来查看您的$Path变量:

echo "$PATH" 

如果您没有看到cordova尝试安装的路径相同,则需要修复安装位置。

执行命令

 npm config get prefix

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

所以运行此命令将其更改为/usr/local

 npm config set prefix /usr/local

它确实形成了我。信用证转到:npm global path prefix

答案 2 :(得分:11)

您需要将“/ usr / local / share / npm / bin”目录添加到$ PATH变量中。 打开终端/命令行并输入:

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

答案 3 :(得分:4)

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

~/.bashrc中添加以下行就可以解决问题。

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

答案 4 :(得分:2)

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

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

当我直接使用

运行cordova命令时
/usr/local/lib/node_modules/cordova/bin/cordova

它什么都不返回

答案 5 :(得分:2)

在OSX中:

用brew安装npm后,如果仍然找不到命令,我建议你查看你隐藏的〜/ .npm-packages / bin目录,看看你是否看到了'cordova'内。您可以通过以下方式执行此操作:

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

如果你在那里看到cordova,你只需要确保这个目录在你的路径中。如果您正在使用bash,那么请确保使用以下内容编辑〜/ .bashrc(替代方案,如果您使用zsh,编辑以下文件〜/ .zshrc),最后添加此行(将EDIT_THIS_PUT_YOUR_USER_NAME_HERE替换为您的实际用户名):

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

之后要么选择刚刚编辑过的文件,要么只需退出终端并打开一个新文件即可。要在这里获取文件是说明:如果您编辑了〜/ .bashrc,那么只需键入' source~ / .bashrc',或者如果您使用zsh而不是bash,并且您编辑了〜 /.zshrc,然后只需输入' source~ / .zshrc'而且你很高兴去。你现在应该可以输入'cordova'并在屏幕上看到正确的输出。

答案 6 :(得分:2)

这也发生在我身上。幸运的是,发现了出色的文章:http://blog.webbb.be/command-not-found-node-npm/

我将在这里进行总结。当npm安装到非标准位置且不在您的路径中时,可能会发生这种情况。

  

要检查npm的安装位置,请运行:npm root -g

应该说/usr/local/lib/node_modules

我的/Users/myusername/.npm-packages/lib/node_modules

要将其设置到正确的位置:

  • 运行:npm config set prefix /usr/local

  • 然后使用-g重新安装您的npm软件包: npm install -g cordova

答案 7 :(得分:1)

我刚刚向NPM提出了同样的问题并且最近得到了答案(npm command not found after updating to Mac OSX 10.9.4),您也可以像我一样在这里应用它。试试这个:

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

它对我有用。

答案 8 :(得分:1)

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

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

答案 9 :(得分:0)

对我来说,在带有Homebrew的OSX Yosemiti上安装节点时,没有在相应的/ usr / local / lib位置创建Cordova包。我必须明确地将我的.npm-packages中的cordova文件夹复制到应该用自制软件安装的地方。

以下命令对我有用:

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

答案 10 :(得分:0)

任何寻找 2021 年答案的人都可以看看@Matthew Redmond 的解决方案如下:

“通过在终端中运行以下命令来查看您的 $Path 变量:

echo "$PATH" 如果您没有看到cordova 尝试安装的相同路径,则需要修复安装位置。

运行:

npm config get prefix

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

所以运行这个把它改成/usr/local:

npm config set prefix /usr/local "

答案 11 :(得分:0)

在Mac OS上:

  • 修复权限:

    npm install -g cordova

  • 安装cordova:

    cordova

    安装的科尔多瓦路径:/usr/local/Cellar/node/11.10.1/bin/cordova

  • 类型:

    -bash: cordova: command not found

    如果显示消息:

    sudo ln -s /usr/local/Cellar/node/11.10.1/bin/cordova /usr/bin/

  • 将cordova映射到usr / bin:

    cordova

  • 重新输入:

    Interactive Push Notifications

    Bash Cordova工作了

答案 12 :(得分:0)

您无需安装程序包即可轻松运行cordova。只需在要运行的任何命令前添加npx。例如:

npx cordova create myApp org.apache.cordova.myApp myApp
npx cordova platform add browser

答案 13 :(得分:0)

这是非常基本的,但对我来说问题是尝试在项目文件夹中安装cordova,而不是本地文件夹。轻松修复。

答案 14 :(得分:0)

在我的情况下,问题是,npm前缀设置为不同的路径,cmd无法从中选择。

我使用

解决了这个问题
npm config set prefix "/usr/local"

在尝试此操作之前,您可以使用以下命令

查看npm使用的实际前缀
npm config get prefix 

答案 15 :(得分:0)

您需要在bash文件中添加cordova bin的路径。

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

尝试在编辑文件后关闭并重新打开终端。

答案 16 :(得分:0)

您应该更新环境变量路径, 如果安装了phonegap,那么你应该在:

中找到它

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

如果找到此路径,则将其添加到路径中。

答案 17 :(得分:0)

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