我不会问一个问题,但回答一个问题,因为到目前为止我已经在网上找到了这个建议,而且我自己也想出了这个建议。分享很好,对吧?
所以在命令行上,我这样做了:
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(我包括最后两个拒绝消息,以防万一有人搜索它们。)
答案 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中以便使用它们