编号
完整的代码库和文件夹结构可参见GitHub
这是Swagger相关的路由(必须使其成为独立服务器)
// api/v1.ts
import express = require("express");
import swaggerJSDoc = require("swagger-jsdoc");
import swaggerUi = require("swagger-ui-express");
import packageJSON = require("../package.json");
import path = require("path");
const app = express();
app.use(express.json());
app.use(express.static(path.resolve(__dirname, "../", "public")));
const swaggerSpec = swaggerJSDoc({
swaggerDefinition: some_spec,
apis: ["api/*"]
});
const cssOpts = some_css_override;
app.use("/api/v1", swaggerUi.serve, swaggerUi.setup(swaggerSpec, cssOpts));
module.exports = app;
问题
当我运行vercel dev
(local-localhost:3000/api/v1)时,我看到了预期的文档:
但是,当我将代码推送到触发vercel build的分支时,我看到以下内容:
检查控制台,我看到:
DevTools failed to load source map: Could not parse content for https://colormaster-1unjfn63b-lbragile.vercel.app/api/v1/swagger-ui-bundle.js.map: Unexpected token < in JSON at position 1
DevTools failed to load source map: Could not parse content for https://colormaster-1unjfn63b-lbragile.vercel.app/api/v1/swagger-ui-standalone-preset.js.map: Unexpected token < in JSON at position 1
即使他们回答200
我知道这与HTML内容的JSON.parse()
有关,但不知道如何修复。有什么想法吗?
2条答案
按热度按时间xtupzzrd1#
我正面临着和你完全一样的问题,试图用快递把斯瓦格部署到维塞尔,但没有成功。
我又执行了一个步骤,现在我在控制台中看到一个错误:
拒绝应用“https://myurlishere.vercel.app/api-docs/swagger-ui.css”中的样式,因为其MIME类型('text/html')不是受支持的样式表MIME类型,并且启用了严格MIME检查。
我所做的是,添加一个文件routes.ts
我的server.ts看起来像这样:
您将在上面的文件中看到我将app.更改为routes.,如下所示:
我仍然无法解决这个问题,但是这个新的错误也许可以帮助你找到解决方案。我也在寻找这个问题的方法。
EDIT:问题解决了。
这是解决我的问题的代码:
server.ts
monwx1rj2#
嘿,我遇到了同样的问题!我使用的解决方案不是最优的,但它起作用了
知道css文件在本地处理得很好,我所做的就是将自定义css添加到我的swagger-ui文档中。因此,由于css在本地工作,我复制了所有的css(已检查的Web浏览器看到了swagger-ui. css文件的源代码),创建了一个css文件,将css粘贴到其中,然后将css文件添加到我的静态文件夹中。
下面是如何添加costum CSS
下面是定义静态文件的方法
所以现在本地我有2个css文件工作,但在vercel上只有一个工作!
希望能有所帮助