Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不重新启动服务器的情况下运行新的/更新的应用程序文件_Javascript_Node.js - Fatal编程技术网

Javascript 在不重新启动服务器的情况下运行新的/更新的应用程序文件

Javascript 在不重新启动服务器的情况下运行新的/更新的应用程序文件,javascript,node.js,Javascript,Node.js,我正在创建一个http项目,我想知道访问非服务器文件的最佳方式是什么?主服务器不会有太大变化,我不想把所有代码都写在server.js文件中,而是想把它的应用程序逻辑写在其他文件中。我们可以做什么,而不是每次更新这些文件时都重新启动服务器?我想每隔5分钟左右做一次间隔来刷新文件,但是有更好的方法吗 示例(server.js): 因此,这就是我关于如何在不重新启动服务器的情况下重新加载应用程序的想法,但是有更好的方法吗?如果您谈论的是重新启动以进行开发,您应该研究nodemon 我正在寻找开发和生

我正在创建一个
http
项目,我想知道访问非服务器文件的最佳方式是什么?主服务器不会有太大变化,我不想把所有代码都写在
server.js
文件中,而是想把它的应用程序逻辑写在其他文件中。我们可以做什么,而不是每次更新这些文件时都重新启动服务器?我想每隔5分钟左右做一次
间隔
来刷新文件,但是有更好的方法吗

示例(server.js):


因此,这就是我关于如何在不重新启动服务器的情况下重新加载应用程序的想法,但是有更好的方法吗?

如果您谈论的是重新启动以进行开发,您应该研究nodemon

我正在寻找开发和生产,如果可能的话,生产是一个完全不同的故事,取决于你在新版本中使用什么样的策略。通常,我不会看到人们使用重新启动新代码,而是使用新部署。我们目前不使用node,我们正在学习,因此我不确定“新部署”对node的真正含义。我们目前使用的PHP运行和工作方式大不相同。我个人看到和喜欢的是不可变的服务器。因此,如果您更改了代码,您就可以使用新代码启动一个新实例,而不仅仅是更改现有服务器上的代码。我不知道php项目通常是如何完成的。使用php,我们只需将页面的代码放在根目录中,它就会立即工作。我们有git,所以我们只需在cron内每隔5分钟对新代码进行一次签出,然后它就开始在服务器上工作。通常,您不能用新文件替换正在运行的模块文件。通常有状态、正在使用的模块句柄等。。。我认为可以写入重新加载,但无论如何,在重新加载期间,您都必须暂停服务器的活动,因为在重新加载完成之前,服务器将处于部分初始化状态。如果所有这些定制开发都值得避免偶尔的服务器重启,我会非常惊讶。这将使开发变得非常复杂。如果您试图实现超高可用性,那么通常的方法是使用负载平衡器和多个服务器进程。从负载平衡器中取出一个服务器进程,更新它,重新启动它,将它放回负载平衡器,然后对另一个进行同样的操作。
var http = require('http');

// Load the initial app
require('./app/main.js');

// Reload the app every 5 minutes
setInterval(function(){
    delete require.cache[require.resolve('./app/main.js')];
    require('./app/main.js');
}, 300000);

// Listen and handle requests
var server = http.createServer(requestHandler);
server.listen(8000);