【问题标题】:Trying to set up swagger ui inside my node.js / express.js project试图在我的 node.js / express.js 项目中设置 swagger ui
【发布时间】:2021-10-12 06:39:15
【问题描述】:

我正在尝试在我的 node.js / express.js 项目中设置 swagger ui,这就是我所做的

(我正在关注website 中的教程)

package.json

{
  "name": "challenge",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "type": "module",
  "scripts": {
    "dev": "nodemon server.js",
    "build": "node server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "nodemon": "^2.0.12",
    "swagger-ui-express": "^4.1.6"
  }
}

swagger.json

{
  "swagger": "2.0",
  "info": {
    "version": "1.0.0",
    "title": "Test Coordinadora - Docs",
    "description": "Competición por cargo desarrollador backend, API en donde se resuelven distintos retos para demostrar capacidad lógica en node.js",
    "license": {
      "name": "MIT",
      "url": "https://opensource.org/licenses/MIT"
    }
  },
  "host": "localhost:5000",
  "basePath": "/challenge",
  "tags": [
    {
      "name": "Test Coordinadora - Docs",
      "description": "Competición por cargo desarrollador backend, API en donde se resuelven distintos retos para demostrar capacidad lógica en node.js"
    }
  ],
  "schemes": ["http"],
  "consumes": ["application/json"],
  "produces": ["application/json"]
}

server.js

import express from "express";
import cors from "cors";
import swaggerUi from "swagger-ui-express";
import swaggerDocument from "./swagger.json";

import routes from "./routes/exercises.js";

const app = express();

app.use(express.json());
app.use(cors()); // Only if we use a fronted to send data

app.use("/challenge", routes);

// Setting up swagger UI

app.use("/api_docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument));

app.listen(5000, () => {
  console.log("Server running succesfully");
});

文件夹结构

** 当我尝试 npm run dev ** 这是输出

internal/process/esm_loader.js:74
    internalBinding('errors').triggerUncaughtException(
                              ^

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".json" for C:\Users\diego cifuentes\Desktop\Coordinadora Mercantil Examen\challenge\swagger.jsonn\challenge\swagger.json
    at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:71:15)
    at Loader.getFormat (internal/modules/esm/loader.js:102:42)
    at Loader.getModuleJob (internal/modules/esm/loader.js:231:31)
    at async ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:58:21)
    at async Promise.all (index 3)
    at async link (internal/modules/esm/module_job.js:63:9) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
[nodemon] app crashed - waiting for file changes before starting...

关于如何解决这个问题的任何想法?我只是希望能够在路由中制作我的 API 文档

http://localhost:5000/challenge/docs

【问题讨论】:

    标签: node.js json swagger


    【解决方案1】:

    这里有类似的解决方案,Import '.json' extension in ES6 Node.js throws an error

    您可能会遇到 ES 模块的问题。我遇到了同样的问题。这是我为解决它所做的。

    import fs from 'fs';
    import swaggerUi from 'swagger-ui-express';
    
    const swaggerJson = JSON.parse(
      fs.readFileSync(`${path.resolve()}/swagger.json`)
    );
    
    const app = express();
    
    app.use('/api-docs/', swaggerUi.serve, swaggerUi.setup(swaggerJson));
    

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2019-06-07
      • 2021-11-14
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 2013-07-09
      • 2018-04-10
      相关资源
      最近更新 更多