1

我有一个简单的节点脚本

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 或其他端口上侦听不同文件的正确方向。

4

1 回答 1

2

这是正常行为。Ctrl只有在没有什么可做的情况下(或者如果您通过+手动停止它),节点才会退出C。由于您告诉 http to listen(),该过程将无限期地保持活动状态。

目前尚不清楚您要问什么,但是如果您想在应用程序中运行其他文件,只需require()它们即可。

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

otherFile现在将设置为您module.exports在 otherFile.js 中所做的任何事情。

您应该阅读模块文档以全面了解其require工作原理。

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


我现在将在字里行间稍微阅读一下:看起来您可能想知道如何让 http 像其他 Web 服务器一样从磁盘提供文件。Node 不像传统的 Web 服务器那样工作。您的代码必须明确处理从磁盘提供内容。

幸运的是,有一些框架/库可以很容易地做到这一点。如果您正在构建任何类型的 Web 服务,您应该真正使用框架而不是原始 http 模块。我建议查看Express。使用express.static.

于 2013-08-01T22:01:26.983 回答