最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

节点JS服务器头

运维笔记admin9浏览0评论

节点JS服务器头

节点JS服务器头

我目前在Web开发初学者。因此自然而然我使用Node.js的作为后端为我创建一个应用程序包括使用REST获取数据,然后搜索和排序。那我坚持上的部分是怎么做头工作的Node.js和一般的Web服务器上。我的代码下面有基本上是建立在服务器上的端口3000,然后我有一个统计终点了多少次打了一个柜台。我不明白的是,节点引发错误。因此,我试图重写头。从研究我已经在网上完成的,一旦它的node.js在这种情况下,服务器会与客户,这是我们的前端握手时,它设置了一个头。然后客户可以使用API​​的路线做出服务器的请求,并得到回应。什么我不明白的是头是如何在这个用吗?

const express = require('express');
const app = express();
const port = 3000;

var counter=0;

app.get('/',(req,res) => {
    res.send("Hello World");
    console.log("First Request");
    counter++;

    if(counter%2)
    {
           res.setHeader("Content-Type", "text/html");
           res.send("Second Request");
    }


})


app.listen(port,()=>{
    console.log("App is listening on port 3000");
})

它抛出的例外是这个

rror [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:470:11)
    at app.get (/Users/taherhuzefa/Desktop/Personal/groupme_extension/index.js:14:16)
    at Layer.handle [as handle_request] (/Users/taherhuzefa/Desktop/Personal/groupme_extension/node_modules/express/lib/r
outer/layer.js:95:5)
    at next (/Users/taherhuzefa/Desktop/Personal/groupme_extension/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/Users/taherhuzefa/Desktop/Personal/groupme_extension/node_modules/express/lib/router/route.js:112
:3)
    at Layer.handle [as handle_request] (/Users/taherhuzefa/Desktop/Personal/groupme_extension/node_modules/express/lib/r
outer/layer.js:95:5)
    at /Users/taherhuzefa/Desktop/Personal/groupme_extension/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/Users/taherhuzefa/Desktop/Personal/groupme_extension/node_modules/express/lib/router/ind
ex.js:335:12)
    at next (/Users/taherhuzefa/Desktop/Personal/groupme_extension/node_modules/express/lib/router/index.js:275:10)
    at expressInit (/Users/taherhuzefa/Desktop/Personal/groupme_extension/node_modules/express/lib/middleware/init.js:40:
5)
回答如下:

你在做什么是你正在尝试它已经在某些情况下发出后发送响应。要清除它,

案例1:当你的,如果条件为假。

在这种情况下,res.send(的 'Hello World');早就跑了,而如果条件res.send(“第二请求”)将不会运行。所以,你不会得到错误。

案例2:如果您若条件为真。

在这种情况下,res.send(的 “Hello World”);将首先运行,这意味着响应已经发出,现在的“如果”条件将是真实的,并计划将再次发送响应,这是快递非法操作,如响应已经发送。

为了解决这个问题,你的代码改成这样:

const express = require('express');
const app = express();
const port = 3000;

var counter=0;

app.get('/',(req,res) => {

 if(counter%2)
{
       res.setHeader("Content-Type", "text/html");
       res.send("Second Request");
}

else{
res.send("Hello World");
console.log("First Request");

}
counter++;
})


app.listen(port,()=>{
console.log("App is listening on port 3000");
})

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论