【问题标题】:-bash: cordova: command not found; or -bash: phonegap: command not found-bash:cordova:找不到命令;或 -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(我将最后两条拒绝消息包括在内,以防有人搜索它们)。

【问题讨论】:

标签: cordova


【解决方案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

【讨论】:

【解决方案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后问题就解决了。

                              【讨论】:

                                猜你喜欢
                                • 2021-01-28
                                • 1970-01-01
                                • 2019-07-07
                                • 1970-01-01
                                • 1970-01-01
                                • 2018-08-03
                                • 2014-07-01
                                • 2018-07-18
                                • 2010-12-09
                                相关资源
                                最近更新 更多