node.js - 为什么在将标头发送到客户端后出现节点错误无法设置标头?
问题描述
我有这个简单的服务器来玩 express 和 node。当我在app.get()
方法内调用函数时出现此错误。我在互联网上搜索过,但我仍然无法弄清楚这里发生了什么。
错误
http_outgoing.js:518 throw new ERR_HTTP_HEADERS_SENT('set'); ^ Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at ServerResponse.setHeader (_http_outgoing.js:518:11) at Array.write (G:\Project\Node Projects\Automater\node_modules\finalhandler\index.js:285:9) at listener (G:\Project\Node Projects\Automater\node_modules\on-finished\index.js:169:15) at onFinish (G:\Project\Node Projects\Automater\node_modules\on-finished\index.js:100:5) at callback (G:\Project\Node Projects\Automater\node_modules\ee-first\index.js:55:10) at IncomingMessage.onevent (G:\Project\Node Projects\Automater\node_modules\ee-first\index.js:93:5) at IncomingMessage.emit (events.js:327:22) at endReadableNT (_stream_readable.js:1221:12) at processTicksAndRejections (internal/process/task_queues.js:84:21) { code: 'ERR_HTTP_HEADERS_SENT' }
这是我的代码
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/user',(req,res,next) =>{
log(req,res,next);
res.send('user');
})
app.get('/',(req,res,next) => {
res.send('Success');
});
function log(req,res,next){
console.log('Logger !!!');
next();
}
app.listen(port, () => console.log(`listening on port ${port}!`));
解决方案
这意味着响应已经发送到客户端。
你正在做两件事: res.send('user'); 重发();
删除 res.end() ,它应该是好的。
推荐阅读
- ios - 有没有办法根据从前一个视图收集的值在 swiftUI 视图中创建对象?
- javascript - 是什么导致 node.js 崩溃?
- sql-server - Is this T-SQL statement equivalent with the PL/SQL statement?
- python - Python RTD 服务器不会更新
- javascript - 更改后反应子组件不渲染
- javascript - 通过 HTML 表单向 Django 发送字典
- ruby - 安装 Ruby on Rails 最新版本匹配 Ruby 3.0
- sql - 如果结束日期比下一行开始日期早 1 天,如何添加日期
- r - 是否有任何内置的 R 函数来计算混合距离
- ios - Swift中滚动视图的旋转问题