4
respostas

meu projeto deu erro a pos a inserção da ferramento de formatosAceitos

meu projeto deu erro a pos a inserção da ferramento de formatosAceitos.

const formatosAceitos = require('./Serializador').formatosAceitos

app.use(bodyParder.json())

app.use((requisicao, resposta, proximo) => { let formatoRequisitado = requisicao.header('Accept')

if (formatosAceitos.indexOf(formatoRequisitado) === -1) {
    resposta.status(406)
    resposta.end()
}

resposta.setHeader('Content-Type', formatoRequisitado)
proximo()

})

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at ServerResponse.setHeader (httpoutgoing.js:558:11) at ServerResponse.header (C:\Users\mnsfreis\Desktop\CURSO ALURA\api-petshop\node_modules\express\lib\response.js:771:10) at ServerResponse.contentType (C:\Users\mnsfreis\Desktop\CURSO ALURA\api-petshop\node_modules\express\lib\response.js:599:15) at ServerResponse.send (C:\Users\mnsfreis\Desktop\CURSO ALURA\api-petshop\node_modules\express\lib\response.js:145:14) at C:\Users\mnsfreis\Desktop\CURSO ALURA\api-petshop\api\index.js:43:14 at Layer.handle_error (C:\Users\mnsfreis\Desktop\CURSO ALURA\api-petshop\node_modules\express\lib\router\layer.js:71:5) at trim_prefix (C:\Users\mnsfreis\Desktop\CURSO ALURA\api-petshop\node_modules\express\lib\router\index.js:315:13) at C:\Users\mnsfreis\Desktop\CURSO ALURA\api-petshop\node_modules\express\lib\router\index.js:284:7 at Function.process_params (C:\Users\mnsfreis\Desktop\CURSO ALURA\api-petshop\node_modules\express\lib\router\index.js:335:12) at next (C:\Users\mnsfreis\Desktop\CURSO ALURA\api-petshop\node_modules\express\lib\router\index.js:275:10)

4 respostas

Boa tarde, você colocou o projeto no Github? Se sim, pode mandar o link do repositório?

Boa noite , Desculpa a Demora. ai meu repositorio. ainda continua o erro https://github.com/fernandoreis9173/CursoAgendaPetShopV2

Bom dia, desculpa a demora. Vi seu código e vi duas coisas que você pode fazer, que eu testei aqui com seu código e funcionou. A primeira é adicionar o return no resposta.end();

return resposta.end()

outra coisa é após o resposta.setHeaders, você precisa adicionar o proximo() do middleware, da seguinte forma:

    resposta.setHeader('Content-Type', formatoRequisitado)
    proximo();

ficando o app.use completo assim:

app.use((requisicao, resposta, proximo) => {
    let formatoRequisitado = requisicao.header('Accept')

    if (formatosAceitos.indexOf(formatoRequisitado) === -1) {
        resposta.status(406)
        return resposta.end()
    }

    resposta.setHeader('Content-Type', formatoRequisitado)
    proximo();
})

Outra coisa também que posso sugerir, não é nada que no momento vá alterar sua API, mas a biblioteca bodyParser é deprecata, agora você pode fazer tudo com o express, por exemplo o:

app.use(bodyParder.json())

pode ser trocado por:

app.use(express.json())

Bons estudos! :)

muito obrigado pelo suporte .. Deu Certo