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

现在学习Node.JS。

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

所以我创build一个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); 

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

 Error: EADDRINUSE, Address already in use. 

所以我知道我需要杀死节点进程使用ps之前,可以体现更改,我可以重新启动之前。

但是,这看起来像一个痛苦。 我是否需要在任何时候修改我正在写的服务器来终止节点进程?

我相信有更好的办法。 任何帮助?

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

我的解决scheme就像

 npm install dev -g node-dev app.js 

node-dev与'node'相同,但每当应用程序dir(或subdir)中的任何文件被更改时,都会自动重新运行app.js。 这意味着在静态文件更改时也要重新启动,但在开发模式下应该可以接受

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

如果你把你的服务器放在一个模块中, require从主脚本中获取, fs.watchFile用于修改.js,然后手动停止它作为文件更改的反应,从模块caching手动删除它( require.cache如果我没有弄错的话),然后再次require

或者在subprocess中运行它,并在文件更改后杀死并重新生成它(也就是自动执行你现在要做的事情)。

你可以使用像nodemon ( 这里的video教程 )或node-supervisor,这样服务器在编辑文件时自动重启。
如果要手动执行此操作,则只需中断进程(CTRL + C)并重新运行上一个命令(节点server.js)。