使用Node.JS HTTP服务器的工作流程

时间:2011-11-17 10:57:35

标签: node.js

此刻学习Node.JS。

一切都很顺利,只是我对工作流程有一点挑战。

所以我创建一个侦听特定端口的HTTP服务器。例如

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(8888);

工作正常。唯一的问题是,当我编辑具有上述代码的文件,并尝试通过键入node server.js再次启动节点进程时,我收到以下错误:

Error: EADDRINUSE, Address already in use.

所以我了解到我需要先使用ps终止节点进程,然后才能反映出更改,然后才能重新启动。

但这看起来很痛苦。每当我对正在编写的服务器进行更改时,我是否需要终止节点进程?

我相信有更好的方法。有什么帮助吗?

4 个答案:

答案 0 :(得分:1)

在开发过程中,我倾向于在终端窗口中从命令行运行节点。当我完成测试时,我只需按Ctrl-C来中断当前进程,该进程将杀死节点,然后按向上箭头键重新启动进程。

答案 1 :(得分:1)

我的解决方案就像

一样简单
npm install dev -g
node-dev app.js

node-dev与' node'相同。但每次更改应用程序目录(或子目录)中的任何文件时,都会自动重新运行app.js.它意味着在更改静态文件时重新启动,但对于开发模式应该是可接受的

答案 2 :(得分:0)

没有任何简单的方法。节点的作者不喜欢热重载的想法,所以这就是它的工作方式。

如果您将服务器放在模块中,require来自主脚本,fs.watchFile .js进行更改,然后手动将其作为对文件更改的反应停止,则可以破解它手动将其从模块缓存中删除(require.cache,如果我没有记错的话),再次require

或者在子进程中运行它并在文件更改后杀死并重新生成它(也就是说,自动执行你现在手动执行的操作)。

答案 3 :(得分:0)

您可以使用nodemonvideo tutorial about it here)或node-supervisor之类的内容,以便服务器在编辑文件时自动重启。
如果要手动执行此操作,则只需中断该过程(CTRL + C)并重新运行最后一个命令(node server.js)。

相关问题