'NestJS swagger-ui-express package is missing after deploy
I am using NestJS version 7.1.0 and serverless and creating api document uses nestjs swagger. In local it's worked like champ but after deploy got error.
swagger-ui-express package is missing
I see some issue here but still not resolve this issue. https://github.com/nestjs/swagger/issues/277
This is my package.json
"dependencies": {
"@nestjs/common": "^7.1.0",
"@nestjs/core": "^7.1.0",
"@nestjs/passport": "^7.0.0",
"@nestjs/platform-express": "^7.0.7",
"@nestjs/swagger": "^4.5.8",
"aws-serverless-express-binary": "^1.0.1",
"class-transformer": "^0.2.3",
"class-validator": "^0.11.1",
"dayjs": "^1.8.24",
"dotenv": "^8.2.0",
"dynamodb-data-types": "^3.0.1",
"express": "^4.17.1",
"faker": "^4.1.0",
"jest": "^24.9.0",
"jwks-rsa": "^1.6.0",
"latinize": "^0.4.1",
"lodash": "^4.17.15",
"mime-types": "^2.1.26",
"passport": "^0.4.1",
"passport-jwt": "^4.0.0",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.0",
"rxjs": "^6.5.3",
"serverless-dynamodb-local": "^0.2.39",
"swagger-ui-express": "^4.1.4",
"tslint-loader": "^3.5.4",
"uuid": "^3.3.3",
"winston": "^3.2.1"
},
This is the config:
const options = new DocumentBuilder()
.setTitle("My APIs")
.setDescription("APIs description")
.setVersion("1.0")
.addTag("cats")
.build();
const document = SwaggerModule.createDocument(app, options);
SwaggerModule.setup("api", app, document);
Any help!
Solution 1:[1]
My solution was to install express:
npm i express
Solution 2:[2]
I figured out the solutions, hope this help someone.
I add a fake endpoint to make sure swagger-ui-express not be removed after webpack ran.
if (event.path === "/api") {
event.path = "/api/";
} else if (event.path.includes("/swagger-ui")) {
event.path = event.path.replace("/swagger-ui", "/api/swagger-ui");
}
// Fake to keep swagger-ui-express work after deploy
if (event.path === "/fake-swagger-ui-express") {
swaggerUi.setup(null);
}
Solution 3:[3]
I had to run:
yarn install
to fix it.
Solution 4:[4]
Do you happen to be using yarn workspaces? I had the same problem just now, where locally everything worked but broke on our cluster.
If yes, then try adding this to the package.json of your API that is using the swagger module:
"workspaces": { "nohoist": ["swagger-ui-express"] }
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Sergey Pogranichniy |
| Solution 2 | Binh Ho |
| Solution 3 | Oluwafisayo Owolo |
| Solution 4 | lamlam |
