How could others, on a local network, access my NodeJS app while it's running on my machine?
your node.js server is running on a port determined at the end of the script usually. Sometimes 3000. but can be anything. The correct way for others to access is as you say...
http://your.network.ip.address:port/ e.g. http://192.168.0.3:3000
check you have the correct port - and the ip address on the network - not internet ip.
Otherwise, maybe the ports are being blocked by your router. Try using 8080 or 80 to get around this - otherwise re-configure your router.
I had the same question and solved the problem. In my case, the Windows Firewall (not the router) was blocking the V8 machine I/O on the hosting machine.
- Go to windows button
- Search "Firewall"
- Choose "Allow programs to communicate through Firewall"
- Click Change Setup
- Tick all of "Evented I/O for V8 Javascript" OR "Node.js: Server-side Javascript"
My guess is that "Evented I/O for V8 Javascript" is the I/O process that node.js communicates to outside world and we need to free it before it can send packets outside of the local computer. After enabling this program to communicate over Windows firewall, I could use any port numbers to listen.
If you are using a router then:
Replace
server.listen(yourport, 'localhost');
withserver.listen(yourport, 'your ipv4 address');
in my machine it is
server.listen(3000, '192.168.0.3');
Make sure your port is forwarded to your ipv4 address.
On Windows Firewall, tick all on Node.js:Server-side JavaScript.