luxbock
luxbock

Reputation: 185

Trouble with starting Node.js from a Cygwin console

I have no trouble running node.exe from a regular command prompt:

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

But when I try to do the same thing from a Cygwin console, I run into this:

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

At first I thought it might be because Cygwin has trouble with the path name with a space in it (C:\Program Files\nodejs), but after installing node.js to a directory with no spaces in the path name I was unable to resolve the problem.

I would like to run a Node JS console from Emacs (run from Cygwin) using js-comint, but I ran into this error and have no clue how to resolve it.

Upvotes: 14

Views: 14039

Answers (5)

Dominykas Mostauskis
Dominykas Mostauskis

Reputation: 8125

Using rlwrap node --interactive solved it for me. The --interactive switch keeps it from hanging, and rlwrap fixes quirks with history navigation, etc.

Note: you may need to install rlwrap through Cygwin's package manager.

Upvotes: 0

Avner Solomon
Avner Solomon

Reputation: 1506

I think this is caused by using the win distro in cygwin , since cygwin emulates a *nix environment and node.js for windows looks for the win libraries not the nix ones. In order for node.js to work in cygwin you have to build it yourslef. Also latest versions do no work on cygwin.

Current status from official wiki: Cygwin is no longer supported, despite being POSIX compliant. The latest version that compiles is 0.4.12

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

Upvotes: 6

QT-1
QT-1

Reputation: 996

A similar problem happens when trying to connect from Ubuntu box to windows/cygwing/sshd over ssh.

After fixing the path, running

node

seem to hang (ignore all input) but respond to kill by ctrl-C

However running

node --interactive

works fine, except the EOF character seems to be ctrl-Z rather then the normal unix/cygwin ctrl-D

Upvotes: 6

Bill Burdick
Bill Burdick

Reputation: 975

It won't work from a cygwin console, but it WILL work in a cygwin shell if you run it from a windows console. Just open a command prompt and run Cygwin.bat to get the shell. Then you can run node.

According to this cygwin's console isn't a real console, it's a pipe in disguise.

Upvotes: 22

user797257
user797257

Reputation:

Node.js dropped support for Cygwin since long ago. I've tried using some older version, but it now means a lot of problems with npm and basically every other library you can install through the manager.

What I did: wrote a Windows shell script translating paths into Windows-like paths, but it's a really quick and dirty job, so I won't share it yet. Then I symlinked this bat file in /usr/bin and this is how I'm calling it now. Also, I think I'm starting the REPL there immediately, because the Node version that I have doesn't do it on its own by default.

I've tried building it, but the build is very messy. They've used SCons and some other library on top of it, and that library is somehow out of date now (I'm using SCons for other projects, so I didn't try to downgrade it).

Bottom line, if you just need a JavaScript interpreter in Emacs - try Mozrepl, Node.js just doesn't want to play nice with it.

Upvotes: 4

Related Questions