swagger-ui: ReferenceError: Handlebars is not defined

Trying to generate documentation for endpoint from my api-docs.json definition.

Am i missing something or setting up swagger ui incorrectly ?

Below is the exception

this["Handlebars"]["templates"]["apikey_button_view"] = Handlebars.template({"
                                                        ^
ReferenceError: Handlebars is not defined
  at Object.<anonymous> (/app/node_modules/swagger-ui/dist/swagger-ui.js:9:57)
  at Object.<anonymous> (app/node_modules/swagger-ui/dist/swagger-ui.js:32183:7)

express controller below:

import Handlebars from 'handlebars';
import SwaggerUi from 'swagger-ui';

var app = express();

let swaggerUi = new SwaggerUi({
  url:'/api-docs.json'
});
swaggerUi.load();


// Serve up swagger ui at /docs via static route
var docs_handler = express.static(__dirname + '../../node_modules/swagger-ui/');
app.get(/^\/docs(\/.*)?$/, function(req, res, next) {
    if (req.url === '/docs') { // express static barfs on root url w/o trailing slash
    res.writeHead(302, { 'Location' : req.url + '/' });
    res.end();
    return;
  }
  // take off leading /docs so that connect locates file correctly
  req.url = req.url.substr('/docs'.length);
  return docs_handler(req, res, next);
});
app.get('/api-docs', (req, res) => {
    res.json(swaggerJsonConfig);
});

export default app;

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 15 (4 by maintainers)

Most upvoted comments

Hi, have you tried importing the modules in ES5 way? var Handlebars = require('handlebars'); Does that change anything?