环境:node\r: 没有找到cordova cli文件或目录

5
尝试在OSX上运行cordova cli时出错了,
错误信息为:env: node\r: 没有那个文件或目录。
我从npm获取了最新版本的cordova,所以我认为它是3.0.7。
5个回答

14

解决方案:

$ brew install dos2unix
$ find /usr/local/lib/node_modules -name "*.js" | xargs sudo dos2unix

详情:

OP的问题与Git有关,不过我想先提一下它大多数情况下的快速解决方法。

如果Node尝试执行具有Windows样式行结尾的.js文件,则会出现问题。这个问题可能来自第三方npm包,其中包括那种.js文件。

就像@Leo所提到的,Dos2Unix是答案,以下是一些命令链示例,当我尝试安装Slack-cli时遇到了这个问题。

> npm install -g slack-cli
> slackcli
env: node\r: No such file or directory

修复看起来像这样:

> brew install dos2unix
> find /usr/local/lib/node_modules/slack-cli -name "*.js" | xargs sudo dos2unix
> slackcli --help

嗨..


5
问题似乎是因为cordova在dos格式下。一旦我将其转换为Unix格式,它似乎可以正常工作了。我不再收到“env: node\r: No such file or directory”错误信息。
我使用dos2unix进行更改。https://code.google.com/p/rudix/downloads/detail?name=dos2unix-5.3.3-0.pkg 在我的机器上,cordova文件实际上位于usr/local/lib/node_modules/cordova/bin/cordova。

我认为他们已经修复了这个漏洞,所以如果你获取最新版本,一切都应该没问题了。 - Leo
谢谢。我的问题来自GIT,但是您的答案对于我理解它来自不良行结束错误非常重要。我在下方增加了我的解决方案。 - Yahel

4
在我的Mac OS X系统中,我遇到了同样的问题:我的文件行尾被更改为CRLF(Windows),而不是LS(Unix)。这导致Cordova和Node无法编译该项目,并出现错误:

env: node\r: No such file or directory

罪魁祸首是AUTOCRLF的GIT,我不知道为什么会这样。我在终端中运行了以下命令:
git config --global core.autocrlf input
然后我不得不从GIT中删除该项目并重新克隆它,结果一切正常。

发现这是最简单/最通用的解决方案。运行了该配置命令,重新克隆了项目,一切正常。 - stephennmcdonald

0

对我来说,问题出在安装的gulp库文件中:

'/node_modules/gulp/bin/gulp.js'

在“#!/usr/bin/env node”这一行的末尾有 '\r'。版本:

"github:gulpjs/gulp#4.0"

通过设置以下命令来解决问题:

git config --global core.autocrlf input

然后重新加载存储库。


0
在我的情况下,解决方案是使用sudo运行cordova(Ubuntu 20.04)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接