Nestjs swagger ui在部署到vercel时不加载样式,但在本地运行良好
控制台和网络请求
我添加了具有以下配置的vercel.json并将其部署到vercel。
{
"version": 2,
"builds": [
{
"src": "src/main.ts",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "src/main.ts",
"methods": ["GET", "POST", "PUT", "PATCH", "DELETE"]
}
]
}
main.ts
const swaggerConfig = new DocumentBuilder()
.setTitle('Tansfun')
.setDescription('API for Tansfun')
.setVersion('1.0')
.addBearerAuth(
{
type: 'http',
scheme: 'bearer',
bearerFormat: 'APIKey',
name: 'APIKey',
description: 'Enter API Key',
in: 'header',
},
'APIKey-auth',
)
.build();
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const document = SwaggerModule.createDocument(app, swaggerConfig);
app.useGlobalPipes(new ValidationPipe());
SwaggerModule.setup('api', app, document);
await app.listen(port);
}
bootstrap();
我用的是@nestjs/swagger v6
1条答案
按热度按时间kqlmhetl1#
我最近遇到了这个问题。幸运的是,我找到了一个工作的工作解决方案,解决方案有点hacky tho
第一个解决方案
是让你的API的swagger JSON文件托管它,并使用它与swagger ui资源管理器
如何实现解决方案1
步骤
NODE_ENV
变量设置为development。在**.env文件中**
在您的
app.module.ts
中swagger.json
文件中,该文件位于prjects根目录下的swagger-static文件夹中。本issue on github讨论了如何为您的API生成swagger JSON文件,并提供了解决方案
下面是如何生成
swagger.json
文件的代码片段在您的
main.ts
中https://yourprojectname.vercel.app/swagger/swagger.json
swagger.json
文件的路径,然后单击“浏览”。现在,swagger文档将被加载第二个解决方案(推荐)
在开发中获取丢失的swagger文件,并在vercel上静态手动提供这些文件(您的生产服务)
如何实现解决方案2
步骤
NODE_ENV
变量设置为development。在**.env文件中**
在您的
app.module.ts
中