javascript - Express:发送到客户端后无法设置标头
问题描述
我正在尝试学习 Web API。我正在编写一个简单的代码,该代码在单击按钮后从日志中的服务器获取数据,但我一直在服务器端收到错误消息,即“无法在将标头发送到客户端后设置标头”。
我的服务器端代码:
const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");
const app = express();
projectData = [];
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use(cors());
app.use(express.static("website"));
const port = 9013;
const server = app.listen(port, listening);
function listening () {
console.log("running localhost"+port);
}
let someData = {name:"name", num:"num"};
app.get ('/hello', function (req, res){
res.send("Get request response");
res.send(someData);
})
我的客户端代码是:
const generate = document.getElementById("generate");
generate.addEventListener("click", performAction);
function performAction (e) {
getDemo();
}
const getDemo = async () => {
const res = await fetch ("/hello");
try {
const data = await res.json();
console.log(data);
}
catch (error) {
console.log("erroor");
}
}
感谢您的帮助。
解决方案
这个问题是非常基本的。这里:
app.get ('/hello', function (req, res){
res.send("Get request response");
res.send(someData);
})
您无法发回第二个回复。你已经发Get request response
回给客户了。
1 个请求 = 1 个来自服务器的响应。就这样。删除 1 行:
app.get ('/hello', function (req, res){
res.send(someData);
})
奖励:只是一个提示,你应该把你fetch
的 try/catch 块放在里面而不是外面。
推荐阅读
- python - R foreach 使用 rpy2 python 永远运行 jupyter notebook
- list - 在 kotlin 中输入一个列表作为函数的默认值
- nginx - 如何在自定义域上使用 gunicorn 通过 nginx 提供烧瓶应用程序?
- apache-flink - 如何在 Flink 中创建动态指标
- python - 批量中的张量的逐行处理
- javascript - 如何过滤数组但有一个例外?
- firebase - 集合组查询被 Firebase 规则拒绝
- javascript - TypeScript + Mocha + Express - TypeError: app.address 不是函数
- python-2.7 - “模块”对象没有属性“模式”
- html - 如何制作一个线性渐变 CSS 背景来填充整个背景而不在底部切断?