Подтвердить что ты не робот

Проблема с запуском Node.js с консоли Cygwin

У меня нет проблем с запуском node.exe из обычной командной строки:

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

Но когда я пытаюсь сделать то же самое с консоли Cygwin, я сталкиваюсь с этим:

[email protected] /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 в каталог без пробелов в пути name Я не смог решить проблему.

Я хотел бы запустить консоль JS-w632 с помощью Emacs (запуска из Cygwin) с помощью js-comint, но я столкнулся с этой ошибкой и понятия не имею, как ее разрешить.

4b9b3361

Ответ 1

Я думаю, что это вызвано использованием win-дистрибутива в cygwin, поскольку cygwin эмулирует среду * nix и node.js для окон ищет библиотеки выигрышей, а не nix. Для того, чтобы node.js работал в cygwin, вы должны создать его. Также последние версии не работают над cygwin.

Текущее состояние официальной вики: Cygwin больше не поддерживается, несмотря на совместимость с POSIX. Последняя версия, которая компилируется, составляет 0,4.12

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

Ответ 2

Он не будет работать с консолью cygwin, но он будет работать в оболочке cygwin, если вы запустите его с консоли Windows. Просто откройте командную строку и запустите Cygwin.bat, чтобы получить оболочку. Затем вы можете запустить node.

В соответствии с этим консоль cygwin не является настоящей консолью, она скрывает трубку.

Ответ 3

Аналогичная проблема возникает при попытке подключения из окна Ubuntu в windows/cygwing/sshd через ssh.

После исправления пути выполните

node

кажется, висеть (игнорировать все входные данные), но отвечать на kill ctrl-C

Однако работает

node --interactive

работает отлично, за исключением того, что символ EOF выглядит как ctrl-Z, а не обычный unix/cygwin ctrl-D

Ответ 4

Node.js давно отказался от поддержки Cygwin. Я пробовал использовать старую версию, но теперь это означает множество проблем с npm и в основном каждая другая библиотека, которую вы можете установить через менеджера.

Что я сделал: написал оболочку Windows script, переводящую пути в Windows-подобные пути, но это очень быстрая и грязная работа, поэтому я пока не буду ее использовать. Затем я связал этот файл bat в /usr/bin, и вот как я его сейчас вызываю. Кроме того, я думаю, что я сразу же запускаю REPL, потому что версия Node, которая у меня есть, по умолчанию не делает это.

Я попытался создать его, но сборка очень грязная. Они использовали SCons и некоторую другую библиотеку поверх нее, и эта библиотека как-то устарела (я использую SCons для других проектов, поэтому я не пытался ее понизить).

В нижней строке, если вам просто нужен интерпретатор JavaScript в Emacs - попробуйте Mozrepl, Node.js просто не хочет играть с ним хорошо.

Ответ 5

Используя rlwrap node --interactive, решил это для меня. Переключатель --interactive не поддерживает его, а rlwrap фиксирует причуды с навигацией по истории и т.д.

Примечание. Возможно, вам потребуется установить rlwrap через диспетчер пакетов Cygwin.