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

Posted

技术标签:

【中文标题】-bash:cordova:找不到命令;或 -bash: phonegap: command not found【英文标题】:-bash: cordova: command not found; or -bash: phonegap: command not found 【发布时间】:2013-08-01 06:29:51 【问题描述】:

我不会问一个问题,而是回答一个问题,因为到目前为止我还没有在网上找到这个建议,而且我自己也只是想通了。很好分享,对吧?


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

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 目录的权限被设置为“每个人:无访问权限”。我将其更改为“所有人:只读”并再次尝试。

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(我将最后两条拒绝消息包括在内,以防有人搜索它们)。

【问题讨论】:

你试过我的解决方案了吗? 这是迄今为止我遇到的最佳答案***.com/questions/9679932/… 检查我的答案应该可以工作 【参考方案1】:

我在 Mac Os Mountain Lion 上。经过多次尝试,结果发现解决方案非常快。

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

sudo chown -R $USER /usr/local/bin
sudo chmod -R 0775 /usr/local/bin

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 缓存:

sudo npm cache clear
npm install -g cordova

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

编辑:现在更新为可与 macOS Mojave 一起使用。

注意:Mojave 不允许您更改 /usr/local/altogether 的所有权,会引发错误

chown: /usr/local: Operation not permitted

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

此更改还将解决安装许多其他流行包时的类似常见问题。

【讨论】:

@DeborahSpeece 你能更具体一点吗?也许您正在将文件安装在另一个位置,或者问题不同。您使用的是什么版本的 OSX? 使用 Mac OSX Mavericks。经过大量的扯皮后,npm 为本地用户安装了 cordova 和 phonegap,而不是全局用户,即使使用 -g 和 -gf 也是如此。我无法为全球用户安装任何一个。 @richtextformat 为什么这个答案还没有被接受?【参考方案2】:

通过在终端中运行以下命令来查看您的 $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

【讨论】:

为我工作!谢谢...之前,它被配置为:/usr/local/Cellar/node/5.3.0/libexec/npm【参考方案3】:

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

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

【讨论】:

我建议也永久添加路径:blog.just2us.com/2011/05/… 它还帮助我解决了错误“错误:找不到 ios-sim。请从github.com/phonegap/ios-sim 下载、构建和安装 1.7 或更高版本到您的路径中。或者使用 node.js 'npm install -g ios-sim':nodejs.org'【参考方案4】:

这也发生在我身上。幸运的是发现了这篇很棒的文章: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

【讨论】:

【参考方案5】:

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

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

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

【讨论】:

【参考方案6】:

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

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

当我直接使用运行cordova命令时

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

什么都不返回

【讨论】:

【参考方案7】:

在 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”并在屏幕上看到正确的输出。

【讨论】:

【参考方案8】:

在 Mac 操作系统上:

修复权限:

sudo chown -R <USER LOGIN>:wheel /usr/local/*

安装科尔多瓦:

npm install -g cordova

安装路径cordova:/usr/local/Cellar/node/11.10.1/bin/cordova

类型:

cordova

如果消息显示:

-bash: cordova: command not found

将cordova映射到usr/bin:

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

重新输入:

cordova

巴什科尔多瓦工作

【讨论】:

ln: /usr/bin/cordova: 不允许操作 在我遇到与 AmineG 相同的事情后,Ira 的解决方案对我有用。【参考方案9】:

我刚刚向 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

它对我有用。

【讨论】:

【参考方案10】:

直到:

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

【讨论】:

【参考方案11】:

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

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

【讨论】:

【参考方案12】:

任何寻找 2021 年答案的人都可以看看@Method Man 的解决方案,如下所示:

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

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

运行:

npm config get prefix

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

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

npm config set prefix /usr/local"

【讨论】:

【参考方案13】:

您必须在 bash 文件中添加 cordova bin 的路径。

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

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

【讨论】:

【参考方案14】:

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

【讨论】:

【参考方案15】:

你应该更新你的环境变量路径, 如果安装了 phonegap,那么您应该在以下位置找到它:

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

如果您找到此路径,请将其添加到您的路径中。

【讨论】:

【参考方案16】:

对我来说,当使用 Homebrew 在 OSX Yosemiti 上安装节点时,Cordova 包没有在适当的 /usr/local/lib 位置创建。我必须将我的 .npm-packages 中的 cordova 文件夹显式复制到应该使用 homebrew 安装的位置。

以下命令对我有用:

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

【讨论】:

【参考方案17】:

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

我解决了这个问题

npm config set prefix "/usr/local"

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

npm config get prefix 

【讨论】:

【参考方案18】:

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

【讨论】:

【参考方案19】:

我在遵循指导我安装 cordova-android 的教程时遇到了这个问题:

npm i cordova-android

但它并没有说您应该首先在全球范围内安装cordova CLI!

npm i -g cordova

安装cordova CLI后问题就解决了。

【讨论】:

以上是关于-bash:cordova:找不到命令;或 -bash: phonegap: command not found的主要内容,如果未能解决你的问题,请参考以下文章

Docker /bin/bash: nodemon: 找不到命令

在linux里输入su命令,输入密码后提示bash:…………(一个地址)找不到文件,是怎么回事?

-bash: git: 在 lion osx 的 Xcode 4 中找不到命令

Linux下提示命令找不到:bash:command not found

linux下提示命令找不到:-bash:command not found

解决SSH远程执行命令找不到环境变量的问题