我从常规命令提示符运行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在路径名中有空格(C:\ Program Files \ nodejs),但在将node.js安装到路径名中没有空格的目录之后无法解决问题。
我想使用js-comint从Emacs(从Cygwin运行)运行Node JS控制台,但我遇到了这个错误并且不知道如何解决它。
答案 0 :(得分:21)
它不能在cygwin控制台上运行,但如果你从windows控制台运行它,它将在cygwin shell中运行。只需打开命令提示符并运行Cygwin.bat即可获取shell。然后你可以运行node。
根据this cygwin的控制台不是真正的控制台,它是伪装的管道。
答案 1 :(得分:6)
我认为这是因为在cygwin中使用win发行版引起的,因为cygwin模拟了一个* nix环境,而windows的node.js查找的是win库而不是nix的。为了让node.js在cygwin中工作,你必须将它构建为yourslef。最新版本也不适用于cygwin。
来自官方维基的当前状态:不再支持Cygwin,尽管符合POSIX标准。编译的最新版本是0.4.12
https://github.com/nodejs/node/wiki/Installation#building-on-cygwin
答案 2 :(得分:6)
尝试通过ssh从Ubuntu框连接到windows / cygwing / sshd时会发生类似的问题。
修复路径后,运行
节点
似乎挂起(忽略所有输入)但是通过ctrl-C
响应kill然而正在运行
node --interactive
工作正常,除了EOF字符似乎是ctrl-Z而不是正常的unix / cygwin ctrl-D
答案 3 :(得分:4)
Node.js很久以前就放弃了对Cygwin的支持。我尝试使用一些旧版本,但它现在意味着npm
和基本上每个其他库都可以通过管理器安装的许多问题。
我做了什么:编写了一个Windows shell脚本,将路径转换为类似Windows的路径,但这是一个非常快速和肮脏的工作,所以我还不会分享它。然后我在/usr/bin
中对这个bat文件进行符号链接,这就是我现在调用它的方式。另外,我想我马上就开始使用REPL,因为我所拥有的Node版本默认情况下不会单独执行。
我尝试过构建它,但构建非常混乱。他们在它上面使用了SCons和其他一些库,而且这个库现在已经过时了(我正在使用SCons进行其他项目,所以我没有尝试降级它。)
最重要的是,如果您只需要在Emacs中使用JavaScript解释器 - 尝试使用Mozrepl,Node.js就不想玩得很好。
答案 4 :(得分:1)
使用rlwrap node --interactive
为我解决了这个问题。 --interactive
开关可防止其挂起,rlwrap
修复了带历史记录导航的怪癖等。
注意:您可能需要通过Cygwin的软件包管理器安装rlwrap
。