It sounds like you're looking for some variant of named pipes (fifos) created with mkfifo.
Then you can do something like this:
mkfifo my-pipe
node script.js < my-pipe &
Note that will block until something opens my-pipe for writing. So if you want script.js to be able to open the file (but not of course read anything from it yet), then you need to open it for writing; a trivial way is just to redirect a sleep to it (sleep 3650d > my-pipe &). This will also stop script.js from getting an EOF (end of file) until you kill the sleep (when nothing has a fifo open for write and all the data is gone, the reading side gets an EOF).
Now, you can feed it more lines whenever by writing to my-pipe. Any write that doesn't seek (or mmap, etc.) will work. You could test with echo 'DATA' > my-pipe.
So, taken together:
mkfifo my-pipe
node script.js < my-pipe &
sleep 3650d > my-pipe &
sleep_pid=$!
get-data-command > my-pipe # placeholder for real command to get data
get-data-command > my-pipe
# and so on, for more data.
kill $sleep_pid # kill the sleep, giving script.js an EOF.
As Wildcard points out, you may actually want script.js to open a listening socket and accept data that way. You can use Unix domain sockets if you want to avoid having to deal with authentication as you'd have to on a TCP socket (because Unix sockets use file permissions instead).