Node.js server generated automatically doesn't start (Swagger/OpenAPI)

Gab*_*ges 3 node.js swagger openapi

I have generated a nodejs-server by Swagger Editor, but when I run "npm start" the server doesn't start and return no error.

First time I've run "npm start" all dependencies has been installed, but "node index.js" doesn't start the server.

Second time I've tried "npm start":

dev01@dev01:~/nodejs-server$ npm start

> back-end-rota-exata@1.0.0 prestart /home/dev01/nodejs-server
> npm install


> back-end-rota-exata@1.0.0 start /home/dev01/nodejs-server
> node index.js

dev01@dev01:~/nodejs-server$ 
Run Code Online (Sandbox Code Playgroud)

Then I've tried just "node index.js" too:

dev01@dev01:~/nodejs-server$ node index
dev01@dev01:~/nodejs-server$ 
Run Code Online (Sandbox Code Playgroud)

And nothing happens...

This is the code from "index.js" generated automatically by Swagger Editor:

'use strict';

var fs = require('fs'),
    path = require('path'),
    http = require('http');

var app = require('connect')();
var oas3Tools = require('oas3-tools');
var jsyaml = require('js-yaml');
var serverPort = 8080;

// swaggerRouter configuration
var options = {
  swaggerUi: path.join(__dirname, '/swagger.json'),
  controllers: path.join(__dirname, './controllers'),
  useStubs: process.env.NODE_ENV === 'development' // Conditionally turn on stubs (mock mode)
};

// The Swagger document (require it, build it programmatically, fetch it from a URL, ...)
var spec = fs.readFileSync(path.join(__dirname,'api/swagger.yaml'), 'utf8');
var swaggerDoc = jsyaml.safeLoad(spec);

// Initialize the Swagger middleware
oas3Tools.initializeMiddleware(swaggerDoc, function (middleware) {

  // Interpret Swagger resources and attach metadata to request - must be first in swagger-tools middleware chain
  app.use(middleware.swaggerMetadata());

  // Validate Swagger requests
  app.use(middleware.swaggerValidator());

  // Route validated requests to appropriate controller
  app.use(middleware.swaggerRouter(options));

  // Serve the Swagger documents and Swagger UI
  app.use(middleware.swaggerUi());

  // Start the server
  http.createServer(app).listen(serverPort, function () {
    console.log('Your server is listening on port %d (http://localhost:%d)', serverPort, serverPort);
    console.log('Swagger-ui is available on http://localhost:%d/docs', serverPort);
  });

});
Run Code Online (Sandbox Code Playgroud)

Note: I did not modified any lines.

小智 9

我遇到了同样的问题,我所做的是更改swagger.yamlfrom openapi: 3.0.0to的定义openapi: 3.0.1,然后服务器正常工作。