Modo strict & webpack
Duas configurações que definem o comportamento no boot: uma para CI, outra sobre uma limitação arquitetural.
strict: true
Passe { strict: true } em forRoot() para que a app lance no startup quando qualquer controller com @WithDocs() não tenha um companion file. Recomendado para CI, onde a falha rápida é preferível a um documento OpenAPI silenciosamente incompleto.
DocfyModule.forRoot({ strict: true });webpack: true
Se seu nest-cli.json tem "webpack": true em compilerOptions, o nestjs-docfy não vai funcionar, e não existe configuração que faça funcionar. Isso é arquitetural, não um bug a ser contornado, e tem duas causas:
Primeiro, o webpack agrupa cada módulo em um único arquivo de bundle e nunca popula o require.cache do Node com uma entrada por arquivo-fonte original, que é do que o mecanismo de discovery depende. Você verá Could not locate source file for X para cada controller com @WithDocs().
Segundo, mesmo contornando essa busca, existe uma segunda barreira inevitável: um docs file carregado via require() de fora do bundle cria um objeto de classe estruturalmente diferente daquele que a aplicação em execução de fato usa internamente. Decorar essa cópia isolada não tem nenhum efeito sobre o documento que SwaggerModule.createDocument() realmente serve, e isso acontece silenciosamente, sem erro.
Duas opções:
- Desabilite o webpack: remova
"webpack": truedonest-cli.jsone o pipeline default dotscpassa a funcionar. Ver Convenção de nomes. - Use
patch-spec: patch estático de um OpenAPI já buildado, via análise estática, sem depender derequire.cache. Ver CLI: patch-spec e Workaround para webpack: true.