Express Static和setHeaders:“错误:发送后无法设置标头。”
我收到错误Error: Can't set headers after they are sent.
用下面的代码。
app.use('/assets/u', express.static('./public/img/u', { setHeaders: (res, path, stat) => { redis.get(`image-mime:1`, (err, reply) => { if (err) console.log(err); res.set('Content-Type', reply); }); }, }));
我认为这与callback有关。 因为它以下列方式删除callback:
app.use('/assets/u', express.static('./public/img/u', { setHeaders: (res, path, stat) => { res.set('Content-Type', 'image/png'); }, }));
一切工作就像它应该和我没有任何错误。 会喜欢这个问题的一些帮助。
编辑:当我打开Chrome devtools的“禁用caching”,错误消失。 而当我把它关掉的时候 ,错误又回来了。
这是因为setHeaders()
需要同步运行。 解决scheme是颠倒电话:
app.use('/assets/u', (res, res, next) => { redis.get(`image-mime:1`, (err, reply) => { if (err) return next(err); res.set('Content-Type', reply); next(); }); }, express.static('./public/img/u'));
- 如何在Stampery API.JS文件中设置API密钥
- Nodejs http://test.dev:3000/api/profile。 没有'Access-Control-Allow-Origin'标题Origin'http:// localhost:9000'
- 我是否应该在每个路由模块文件中重复所有这些要求?
- 节点js redis遍历每个散列键值
- 如果我们将目录位置传递给Node.js需要函数,会发生什么?
- 路由问题,而不是收集req.params
- Node.js – 让Node.js / Express与Web Audio API一起工作
- 如何只给予用户Express.js的文章
- Nodejs性能优化