麻烦从Cygwin控制台启动Node.js

从常规命令提示符运行node.exe没有问题:

C:\>node --interactive > console.log("Works fine"); Works fine 

但是当我尝试从Cygwin控制台做同样的事情时,我遇到了这个问题:

 Olli@Olli-MBRr /cygdrive/c $ node.exe events.js:72 throw er; // Unhandled 'error' event ^ Error: read ENOTCONN at errnoException (net.js:900:11) at Socket._read (net.js:391:21) at Socket.Readable.read (_stream_readable.js:320:10) at Socket.read (net.js:293:43) at new Socket (net.js:185:10) at process.stdin (node.js:660:19) at startup (node.js:145:16) at node.js:901:3 

起初我以为这可能是因为Cygwin的path名有一个空格的问题(C:\ Program Files \ nodejs),但是在将node.js安装到path名中没有空格的目录之后,我无法解决问题。

我想从Emacs(从Cygwin运行)使用js-comint运行一个Node JS控制台,但我遇到了这个错误,并没有任何线索如何解决它。

Solutions Collecting From Web of "麻烦从Cygwin控制台启动Node.js"

我认为这是由于在cygwin中使用win发行版而引起的,因为cygwin模拟一个* nix环境,windows的node.js查找win库而不是nix。 为了让node.js在cygwin中工作,你必须建立它。 另外最新的版本不会在cygwin上工作。

官方wiki的当前状态: Cygwin不再支持,尽管是符合POSIX的。 编译的最新版本是0.4.12

https://github.com/nodejs/node/wiki/Installation#building-on-cygwin

它不会从cygwin控制台运行,但是如果从Windows控制台运行,它将在cygwin shell中运行。 只要打开命令提示符并运行Cygwin.bat来获取shell。 然后你可以运行节点。

根据这个 cygwin的控制台是不是一个真正的控制台,它是一个伪装的管道。

自从很久以前,Node.js就不再支持Cygwin了。 我试过使用一些旧版本,但现在意味着很多与npm和基本上你可以通过经理安装其他库的问题。

我做了什么:编写了一个Windows shell脚本,将路径转换成类似Windows的路径,但这是一个非常快速和肮脏的工作,所以我现在不会共享它。 然后我将这个bat文件符号链接到/usr/bin ,这就是我现在调用它的方式。 另外,我认为我立即启动了REPL,因为我拥有的Node版本默认情况下并不是自己做的。

我已经尝试过构建它,但构建非常混乱。 他们已经使用了SCons和其他一些库,并且该库现在已经过时(我正在使用SCons来处理其他项目,所以我没有尝试降级)。

底线,如果你只需要在Emacs的JavaScript解释器 – 尝试Mozrepl,Node.js只是不想玩它。

尝试通过ssh连接Ubuntu box到windows / cygwing / sshd时会发生类似的问题。

固定路径后,运行

节点

似乎挂起(忽略所有输入),但通过CTRL-C回应杀死

然而运行

节点 – 交互

工作正常,除了EOF字符似乎是ctrl-Z而不是正常的unix / cygwin ctrl-D

使用rlwrap node --interactive为我解决它。 – --interactive开关避免悬挂,并且rlwrap通过历史导航等修正怪癖。

注意:您可能需要通过Cygwin的软件包管理器来安装rlwrap