伙计,
我有一台同时运行应用程序的前端(角度)和后端(弹簧启动)的服务器。我能够配置nginx 1.14来将/ api下的调用重定向到端口9091(API正在侦听的本地主机:9091),并允许其他调用使用代码片段进行常规流程:
server {
listen 80 default_server;
server_name example_server example_server;
location / {
root /opt/myapp/html;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:9091;
}
}
现在,我想让swagger在服务器中访问,它在本地运行良好。我试图在下面写两个位置块。以我的理解,它将把对/ swagger-ui的调用路由到swagger的初始页,并且将swagger进行的所有/ webjars调用路由到localhost:9091中的相应位置。
但是该页面无法加载。我在浏览器的控制台中看到一个错误:“未捕获(承诺)TypeError:无法读取null springfox.js:1的属性'1'”。我认为我的路线安排有误,但无法弄清楚。
location /swagger-ui {
proxy_pass http://localhost:9091/swagger-ui.html;
}
location /webjars {
proxy_pass http://localhost:9091;
}
我将pom.xml包含swagger.version = 2.9.0:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
有人遭受过同样的痛苦吗?
最好的问候
答案 0 :(得分:0)
希望还不算太晚:当我试图达到相同的目标时,我遇到了类似的问题。问题是springfox.js从window.location.href中获取了baseUrl。它为swagger-ui.html做一个正则表达式匹配项,并接受它之前的内容(数组的第二个元素)。由于您的浏览器URL仅具有/ swagger-ui,因此正则表达式将无法正确匹配,结果数组为null,因此无法找到它的第二个元素。
查看第128行以获取更多详细信息:https://github.com/springfox/springfox/blob/master/springfox-swagger-ui/src/web/js/springfox.js