Проблема с запуском 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, но я столкнулся с этой ошибкой и понятия не имею, как ее разрешить.
Ответы
Ответ 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.