2013-08-01 34 views
1

我有一个简单的节点脚本运行节点JS多个文件同时

var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337); 

现在,当我运行它,我可以去为localhost:1337并看到输出,但是,命令模块中,它由于某种原因被冻结。直到我按Ctrl + C冻结,只有在Ctrl + C允许执行更多文件后。

这就是我或它的设计方式。如果有人指出我的方向是正确的,那么如何让它始终在端口1337或其他文件上监听。

+0

您正在运行哪个版本的节点?我复制粘贴到我的(0.10.9),并罚款(可以得到一个HTTP响应1337年,但仍然可以输入到提示) – Matt

+0

即时运行0.10.15 ....我的卡住,直到ctrl + c – Anup

+0

从他们的网站是http://nodejs.org/download/ 0.10.15,它是当前版本,在windows 8上用bs和js命令提示符。 – Anup

回答

2

这是正常行为。节点只会在没有其他事情的情况下退出(或者您通过Ctrl + C)手动停止节点。由于您告知http listen(),该流程将无限期保持活跃状态​​。

这并不完全清楚你在问什么,但如果你想在你的应用程序中运行额外的文件,你只需require()他们。

var otherFile = require('./otherFile.js') // the .js is optional 

otherFile,将被设置为任何你在otherFile.js做module.exports

您应该read the module documentation以全面了解require的工作原理。

如果要同时运行其他与节点无关的文件,请打开单独的命令提示符窗口。


我现在将在一行之间读一下:它看起来像你可能想知道如何让http像其他Web服务器一样从磁盘提供文件。节点不能像传统的Web服务器一样工作。你的代码必须明确地处理来自磁盘的事情。

幸运的是,有框架/库可以很容易地完成。如果你正在构建任何类型的Web服务,你应该使用一个框架而不是原始的http模块。我建议看看Express。用express.static从磁盘提供文件很容易。