Post 请求:错误 [ERR_HTTP_HEADERS_SENT]:发送给客户端后无法设置 headers
Post request: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
我正在制作一个简单的后端 API 但是当我尝试 post:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
代码的第一部分似乎 运行 但我不确定为什么其余部分会出错。我尝试了很多解决方案,但它们似乎都不起作用。我想我做错了什么。任何帮助将不胜感激。
这是我的代码:
import { Router } from 'express';
import bcrypt from 'bcryptjs'
import fetch from 'node-fetch';
const router = Router(),
A = require('../../models/A');
router.post('/a/:n/:username', (req, res) => {
bcrypt.genSalt(10, (err, salt) => {
if (err) return res.json({ message: 'error' })
bcrypt.hash(req.params.key, salt, (err, hash) => {
if (err) return res.json({ message: 'error' })
if (req.params.n !== hash) return res.json({ message: 'no access' });
})
})
fetch(`https://api.mojang.com/users/profiles/minecraft/${req.params.username}`)
.then(res => res.json())
.then(json => {
if (!json) return res.json({ message: 'Invalid user.' });
A.findOne({ id: json.id }).then((id) => {
if (id) {
res.json({ id: id.id });
} else {
const a = new A({
id: json.id,
created: Date.now()
})
a.save()
res.json({ id: json.id })
}
})
});
})
export default router;
router.post('/a/:n/:username', (req, res) => {
bcrypt.genSalt(10, (err, salt) => {
if (err) return res.json({ message: 'error' })
bcrypt.hash(req.params.key, salt, (err, hash) => {
if (err) return res.json({ message: 'error' })
if (req.params.n !== hash) return res.json({ message: 'no access' });
//Do the fetch here
})
})
错误是因为执行进入 bcrypt.has 回调和提取。所以同一个请求有多个res.json
,
我正在制作一个简单的后端 API 但是当我尝试 post:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
代码的第一部分似乎 运行 但我不确定为什么其余部分会出错。我尝试了很多解决方案,但它们似乎都不起作用。我想我做错了什么。任何帮助将不胜感激。
这是我的代码:
import { Router } from 'express';
import bcrypt from 'bcryptjs'
import fetch from 'node-fetch';
const router = Router(),
A = require('../../models/A');
router.post('/a/:n/:username', (req, res) => {
bcrypt.genSalt(10, (err, salt) => {
if (err) return res.json({ message: 'error' })
bcrypt.hash(req.params.key, salt, (err, hash) => {
if (err) return res.json({ message: 'error' })
if (req.params.n !== hash) return res.json({ message: 'no access' });
})
})
fetch(`https://api.mojang.com/users/profiles/minecraft/${req.params.username}`)
.then(res => res.json())
.then(json => {
if (!json) return res.json({ message: 'Invalid user.' });
A.findOne({ id: json.id }).then((id) => {
if (id) {
res.json({ id: id.id });
} else {
const a = new A({
id: json.id,
created: Date.now()
})
a.save()
res.json({ id: json.id })
}
})
});
})
export default router;
router.post('/a/:n/:username', (req, res) => {
bcrypt.genSalt(10, (err, salt) => {
if (err) return res.json({ message: 'error' })
bcrypt.hash(req.params.key, salt, (err, hash) => {
if (err) return res.json({ message: 'error' })
if (req.params.n !== hash) return res.json({ message: 'no access' });
//Do the fetch here
})
})
错误是因为执行进入 bcrypt.has 回调和提取。所以同一个请求有多个res.json
,