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,