【问题标题】:How can i make a local server using nodeJs?如何使用 nodeJs 制作本地服务器?
【发布时间】:2019-03-18 12:01:43
【问题描述】:

我正在尝试使用 nodeJs 创建本地服务器,但它无法正常工作。

尝试了什么

var http = require('http');

http.createServer(function(req, res) {
    res.write('Hello');
    req.end();
}).listen(8080);

【问题讨论】:

标签: javascript node.js


【解决方案1】:

使用 response.end 时要小心!

What is the difference between response.end() and response.send()?

response.end() 将始终发送一个 HTML 字符串,而 response.send() 可以发送任何对象类型。对于您的示例,由于您发送的是“hello”的 HTML 字符串,因此两者都可以达到目的,但是在您继续构建服务器时请记住这些注意事项!

var http = require('http');

//Example with response.end()
http.createServer(function(request, response) {
    response.end('Hello');
}).listen(8080);

//Example with response.send()
http.createServer(function(request, response) {
    response.send('Hello');
}).listen(8080);

//Example with res.send() object
http.createServer(function(request, response) {
    response.send({ message: 'Hello', from: 'Happy Dev' });
}).listen(8080);

【讨论】:

  • 我觉得讽刺的是,你和 OP 一样“错字” :) 你的意思是 res.send,而不是 req.send。另请注意,此答案是关于快速库响应,而 OP 正在使用 http 模块。根据文档,http.ServerResponse 的实例没有 send 方法。
  • 这正是我输入响应和请求的全名作为参数的原因......只有两个变量命名,同样不利于代码阅读,正如我们刚刚看到的,导致错误。 ?让我更新答案。
【解决方案2】:

回调中的res(代表响应)是Stream。在将所有你想要的(标题、正文)写入流之后,你必须像这样结束它:

res.end();

你拥有的是req.end()。 使用 req 而不是 res 是您的错误。

此外,由于您在这个人为的示例中只写了一行,因此您可以一次写入缓冲区并结束流:

const server = http.createServer(function (req, res) {
    res.end('Hello');
});

server.listen(8080);

Docs for response.end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 2016-02-26
    • 2023-04-04
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多