47

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


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

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

4

19 回答 19

70

我在 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/完全更改所有权,从而引发错误

chown: /usr/local: Operation not permitted

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

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

于 2013-10-01T10:33:05.260 回答
17

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

于 2015-12-08T18:33:49.770 回答
11

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

export PATH=$PATH:/usr/local/share/npm/bin
于 2013-10-08T14:32:48.047 回答
10

这也发生在我身上。幸运的是发现了这篇很棒的文章: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 install -g cordova等重新安装你的 npm 包

于 2018-09-06T20:36:46.303 回答
5

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

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

export PATH=${PATH}:~/.npm-global/bin
于 2017-03-13T01:47:40.610 回答
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

它什么也不返回

于 2014-08-31T20:21:42.703 回答
2

在 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

  • 将科尔多瓦映射到 usr/bin:

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

  • 重新输入:

    cordova

    巴什科尔多瓦工作

于 2019-04-19T09:38:23.623 回答
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”并在屏幕中看到正确的输出。

于 2016-10-02T18:48:30.703 回答
1

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

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

它对我有用。

于 2014-10-28T13:18:23.373 回答
1

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

npx cordova create myApp org.apache.cordova.myApp myApp
npx cordova platform add browser
于 2018-09-07T13:08:20.010 回答
1

直到:

sudo rm -R /usr/local/lib/node_modules/cordova
npm install -g cordova
于 2016-03-24T22:30:47.180 回答
1

任何寻找 2021 年答案的人都不会比@Method Man 的解决方案更进一步,如下所示:

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

于 2021-08-03T15:02:41.117 回答
0

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

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

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

于 2013-07-31T16:05:05.330 回答
0

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

于 2013-09-02T17:19:16.590 回答
0

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

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

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

于 2013-12-16T12:13:30.683 回答
0

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

于 2018-06-04T15:48:26.520 回答
0

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

以下命令对我有用:

sudo cp ~/.npm-packages/lib/node_modules/cordova /usr/local/lib/node_modules/cordova
于 2016-06-13T14:39:57.513 回答
0

就我而言,问题是,npm 前缀设置为不同的路径,而 cmd 无法从中选择。

我解决了这个问题

npm config set prefix "/usr/local"

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

npm config get prefix 
于 2017-08-09T08:53:07.017 回答
0

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

npm i cordova-android

但是它没有说你应该首先全局安装cordovaCLI!

npm i -g cordova

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

于 2022-01-31T11:27:38.817 回答