Swagger-ui + oauth - > index.js:24未捕获的TypeError:无法读取属性' api'未定义的

时间:2016-08-16 09:51:35

标签: javascript java html swagger swagger-ui

首先,我使用的是swagger-ui提供的标准html / js代码的修改版本。

更改非常简单,而不是仅使用单个SwaggerUI元素,如:

window.swaggerUi = new SwaggerUi({
    ....

window.swaggerUi.load();

我们迭代它们并创建许多swaggerUI元素:

function addSwaggerUI(url, dom_id, host){
        window[dom_id] = new SwaggerUi({
        ....

window[domId].load();

这是我们的迭代:

var services = [{SERVICE_SPECS}];
  var doc_container = document.getElementById('service-doc-container');
  var index = 0;
  services.forEach(function(serviceSpec) {
    var swaggerNode = document.createElement('div');
    swaggerNode.id = "swagger-ui-container-" + index;
    swaggerNode.className = "swagger-ui-wrap";

    var messageNode = document.createElement('div');
    messageNode.id = "message-bar-" + index;
    messageNode.className = "swagger-ui-wrap";

    doc_container.appendChild(swaggerNode);
    doc_container.appendChild(messageNode);
    log("adding service documentation for " + serviceSpec);
    addServiceDocumentation(serviceSpec, swaggerNode.id, "{SERVICE_HOST}");
    index++;
  });

这很安静,直到我们开始使用securityDefinitions oAuth:

"securityDefinitions": {
    "OauthSecurity": {
        "type": "oauth2",
        "authorizationUrl": "http://localhost/oauth/dialog",
        "flow": "implicit",
        "scopes":{  
            "write:sessions":"kill sessions",
            "read:sessions":"get sessions"
        }
    }

现在我得到每个swaggerUI这个错误:

index.js:24 Uncaught TypeError: Cannot read property 'api' of undefined

原始的swaggercode:https://github.com/swagger-api/swagger-ui/tree/master/dist请参阅index.html

有人可以帮忙解决这个问题吗? (替代解决方案:任何人都知道在一个html页面上从不同的json文件添加多个web apis的另一种方法吗?)

更新: 所以我查看了swagger.petstore.io生成的页面,发现了一些名为' authorzie-wrapper'我的代码中可能缺少此元素。

0 个答案:

没有答案