Error: EBADF, bad file descriptor when running node using nohup of forever


I have a problem with node.js running a small web server serving files from the file system. When starting it with node server.js it works like a charm but when starting it with nohup or forever node.js can't find the files.

Problem courtesy of: javabeangrinder


It turned out to be the file path of the file that was the problem. When running the server using node the working directory is the same as the server.js file thus node.js manages to find the file.

When starting whilst using nohup or just starting with forever the working directory doesn't seem to be the same as server.js.

I solved this by prepending the global variable __dirname to the filename.

Solution courtesy of: javabeangrinder


Another solution here is to run the command in a subshell using parentheses. (nohup node index.js)

Discussion courtesy of: Jk Jensen

This works for me:

nohup node server.js </dev/null
Discussion courtesy of: ForzaGreen

This recipe can be found in it's original form on Stack Over Flow.