Как сделать возможность изменения кода приложений без перезагрузки основного приложения nodejs?
Как автор упомянутого сервера приложений, проясню ситуацию. Все остальные приведенные решения перестартовывают процессы. В лучшем случае они запускаются в режиме нескольких процессов (при помощи cluster или используя child_process) и перестартовывают дочерние процессы (worker), а родительский процесс (master) следит за изменениями и не перестартовывает. Это действительно дает нулевой даунтайм, что важно для продакшена, но не особо важно для разработки. А важно другое - удаляются из памяти все данные, все развернутое там состояние, закрываются соединения с БД, выгружаются библиотеки, да и все, что было проинициализировано при старте приложения, все полностью разрушится и перезагрузится. В Impress же подгружаются отдельные файлы, заменяя на лету в памяти предыдущий код. Это делается без eval, при помощи vm. При многочисленных изменениях он понимает, что меняется много файлов (например заливается новая версия приложения) ждет, когда эта активность прекратится, а потом обновит все одним махом. При частых изменениях одного и того же файла, может сложиться ситуация, когда в памяти будут параллельно находиться 2-3 копии одного кода. Дело в том, что в систему идет поток запросов, и старые запросы еще были запущены в момент, когда была предыдущая версия, и они не успели завершиться. Поэтому, нужно дождаться их завершения, а для новых уже можно использовать новую версию кода. Там есть еще много особенностей, о которых долго рассказывать. В общем, мне не известны другие реализации этого решения. Если они таки найдутся, то пришлите на сравнение. Приведенная же статья несколько устарела, для первичного ознакомления берите эту: habrahabr.ru/post/247543
например так
var _eval = require('eval');
var f1 =  function () { return 321 };
console.log(f1());
var f1 = _eval('module.exports = function () { return 123 }');;
console.log(f1());