javascript 如何在对文件进行更改后重新加载nodejs应用程序?

vfwfrxfs  于 2023-09-29  发布在  Java
关注(0)|答案(4)|浏览(98)

我有一个简单的js文件与http模块来测试Hello node的nodejs....
下面是http_test.js文件

var http = require('http');

http.createServer(function(req, res) {
    res.writeHead(200);
    res.end('hello node');
}).listen(8080);

node http_test.js在浏览器上打印得很好...现在如果我把我的响应行改成res.end('changed hello node to hello stoner');,我仍然会在我的页面上得到以前的hello node...
要获取更改的行,我必须结束node的当前示例,然后再次运行node http_test.js
如果我对js文件做了任何更改,我应该重新启动吗?
难道不只是点击刷新我的浏览器做吗?

ktca8awb

ktca8awb1#

您需要停止并重新运行服务器以查看最新更新。要自动执行此操作,可以使用nodemon,执行npm i nodemon -g
然后运行nodemon http_test.js
现在,对于您对http_test.js所做的每个更改,服务器都将自动重新启动

xn1cxnb4

xn1cxnb42#

1)安装nodemon。要安装,请从终端运行:
npm install -g nodemon
2)现在,进入终端,在那里你有程序。然后,快跑
nodemon http_test.js
现在,每次当你对你的应用程序进行更改时,只要保存你的更改,它就会得到反映。
详细信息:-
Nodemon是一个实用程序,它将监视源代码中的任何更改并自动重新启动服务器。非常适合发展。使用npm安装。
只需使用nodemon而不是node来运行您的代码,现在您的进程将在您的代码更改时自动重新启动。
请参考:-
http://nodemon.io/
https://github.com/remy/nodemon

1cklez4t

1cklez4t3#

您必须重新启动服务器,因为文件已加载到内存中。或者你可以使用nodemon,当你改变文件时,它会自动重启你的服务器。

q5lcpyga

q5lcpyga4#

我为这种情况创建了一个nodejs加载器:https://github.com/braidnetworks/dynohot
在这种情况下,您可以按如下方式修改程序:

import http from 'node:http';

const server = http.createServer(function(req, res) {
    res.writeHead(200);
    res.end('hello node');
}).listen(8080);

import.meta.hot?.accept();
import.meta.hot?.dispose(() => server.close());

您可以通过node --loader dynohot http_test.js运行应用程序。确保首先将"type": "module"添加到package.json文件中。之后,如果您将字符串修改为'hello node 2'并在浏览器中刷新,您将看到新文本。
与nodemon相比,dynohot的优势在于它可以只重新加载应用程序中发生更改的部分,而无需重新启动进程。对于较大的应用,React性的改善是非常显著的。

相关问题