2013-07-31 35 views
38

我不会问一个问题,而是回答一个问题,因为我发现这个建议迄今为止并没有在线,只是自己弄明白了。很高兴分享,对吧?-bash:cordova:找不到命令;或-bash:phonegap:command not found


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

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 

的结果是,虽然是相同的,我不能打电话或者通过命令行或科尔多瓦PhoneGap的(我包括这最后两个否认的消息,以防有人对他们的搜索)。

+0

你试试我的解决方案? –

+0

这是迄今为止最好的答案我已经遇到 http://stackoverflow.com/questions/9679932/how-to-use-package-installed-locally-in-node-modules – user2654569

+0

检查我的答案它应该工作 – Prozi

回答

0

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

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

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

0

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

61

我在Mac Os山狮。经过多次尝试后,结果很快。

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

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

如果安装了新版本的node.js,仍然可能会出现一些错误。尝试删除NPM缓存:

sudo npm cache clear 
npm install -g cordova 

然后键入cordova和好运气;)

编辑:这似乎是工作的特立独行,优胜美地,埃尔卡皮坦和塞拉利昂以及

+0

这不适合我。 – Deborah

+0

@DeborahSpeece你能更具体吗?也许你正在另一个位置安装文件,或者问题不同。你使用的是什么版本的OSX? –

+0

使用Mac OSX Mavericks。经过大量的头发撕裂,npm为本地而非全球用户安装了cordova和phonegap,即使使用-g和-gf也是如此。我无法为全球用户安装。 – Deborah

11

您需要添加“/ usr/local/share/npm/bin”目录到你的$ PATH变量。 打开终端/命令行,然后键入:

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

我还建议永久添加路径: http://blog.just2us.com/2011/05/setting-path-variable-in-mac-permanently/ – gardenofwine

+0

它也帮助我错误'错误:ios-sim was未找到。请从https://github.com/phonegap/ios-sim下载,构建并安装版本1.7或更高版本到您的路径中。或'npm install -g ios-sim'使用node.js:http://nodejs.org/' –

0

您应该更新您的环境变量路径, 如果安装的PhoneGap,那么你应该找到它:

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

如果您发现此然后将其添加到您的路径。

2

我以这样的NodeJS调用PhoneGap的命令

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

当我运行科尔多瓦命令直接使用

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

它没有返回

9

看看你$Path变量通过运行在终端如下:

echo "$PATH" 

如果你没有看到相同的路径科尔多瓦正试图安装,你需要修复的安装位置。

运行:

npm config get prefix 

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

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

npm config set prefix /usr/local 

这做到了形成了我。幸得:npm global path prefix

+0

为我工作!谢谢...之前,它被配置为:/usr/local/Cellar/node/5.3.0/libexec/npm –

0

我所有没有工作,直到:

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

对于我来说,在OSX Yosemiti用自制安装节点时,没有被在适当的/ usr创建的科尔多瓦包/本地/ lib位置。我必须明确地将我的.npm-packages中的cordova文件夹复制到它应该用homebrew安装的位置。

下面的命令为我工作:

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

在OSX:

与酿造安装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'并在屏幕上看到正确的输出。

0

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

添加下面的行~/.bashrc是要去解决这个问题。

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

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

我决定使用

npm config set prefix "/usr/local" 

尝试此,你可以看到德实际前缀被用于通过使用以下命令NPM面前的问题,

npm config get prefix