14

从常规命令提示符运行 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 控制台,但我遇到了这个错误并且不知道如何解决它。

4

5 回答 5

21

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

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

于 2014-04-12T13:13:54.250 回答
6

我认为这是由于在 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

于 2013-06-25T12:39:32.843 回答
6

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

修复路径后,运行

节点

似乎挂起(忽略所有输入)但通过 ctrl-C 响应 kill

然而运行

节点——交互式

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

于 2015-10-14T20:29:00.593 回答
4

Node.js 很久以前就放弃了对 Cygwin 的支持。我尝试过使用一些旧版本,但它现在意味着很多问题,npm基本上你可以通过管理器安装的所有其他库。

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

我已经尝试构建它,但是构建非常混乱。他们在上面使用了 SCons 和其他一些库,而那个库现在不知何故已经过时了(我正在将 SCons 用于其他项目,所以我没有尝试降级它)。

最重要的是,如果您只需要 Emacs 中的 JavaScript 解释器 - 尝试 Mozrepl,Node.js 只是不想与它配合得很好。

于 2013-06-25T17:11:33.923 回答
0

使用rlwrap node --interactive为我解决了它。该--interactive开关可防止其挂起,并rlwrap通过历史导航等修复怪癖。

注意:您可能需要rlwrap通过 Cygwin 的包管理器进行安装。

于 2017-09-20T09:49:44.413 回答