O problema
Estou trabalhando em um projeto Node.js com TypeScript e Express.js. A certa altura, precisei anexar um objeto de usuário ao objeto Express Request, mas me deparei com este erro TypeScript:
A propriedade 'usuário' não existe no tipo 'Solicitação'.
Percebi rapidamente que isso acontece porque o objeto Request padrão do Express não inclui uma propriedade de usuário e o TypeScript não gostou disso.
Minha correção inicial
Para corrigir isso, estendi a interface Request para adicionar a propriedade do usuário. Veja como eu fiz:
// src/types/express.d.ts import { User } from '@prisma/client'; // Assuming User is a Prisma model declare global { namespace Express { interface Request { user?: User; // Add user to the Request interface } } }
{ "compilerOptions": { //extra options here "typeRoots": ["./node_modules/@types", "./src/types"] // Add the types folder } }
Neste ponto, o erro desapareceu do meu editor de código, então pensei ter resolvido o problema. Mas quando tentei executar o projeto, encontrei outro erro no terminal:
erro TS2339: A propriedade 'usuário' não existe no tipo 'Solicitação'.
Preso por dias
Passei de 3 a 4 dias solucionando isso, tentando tudo que pude encontrar online. Fiquei completamente preso e não conseguia descobrir por que não estava funcionando.
A solução
Finalmente, descobri a raiz do problema e corrigi-o com estas etapas:
npm install -g texto digitado
Execute o compilador TypeScript no modo Watch: usei o sinalizador --watch para recompilar automaticamente meu código TypeScript enquanto trabalhava:
tsc --assistir
Reiniciar meu editor de código: reiniciei meu editor (VS Code no meu caso) para ter certeza de que tudo foi carregado corretamente.
Executar o projeto: depois de reiniciar, executei o projeto novamente - e funcionou!
Conclusão
O que pensei que seria um pequeno problema se transformou em dias de frustração, mas finalmente consegui fazer funcionar! Se você estiver enfrentando problemas semelhantes com o TypeScript não reconhecendo novas propriedades no objeto Request do Express, lembre-se de:
Estenda a interface de solicitação corretamente.
Certifique-se de que o compilador TypeScript (tsc) esteja instalado e funcionando corretamente.
Espero que isso ajude qualquer pessoa que esteja presa como eu!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3