Skazka

Skazka

  • Server
  • Examples
  • Github
  • Blog

›Running server

Introduction

  • Server

Start working

  • Server Init
  • Server Request
  • Server Response
  • Server Error Handler
  • Server Logger
  • Server Cookies Parser
  • Server Helmet

Running server

  • Server HTTP(S)

API

  • Server GraphQL
  • Server Router
  • Server Body Parser
  • Server CORS
  • Server Method Override
  • Server Virtual Host
  • Server Chaos

Database

  • Server Mongoose
  • Server MySQL
  • Server PostgreSQL
  • Server Redis

Static files

  • Server Index
  • Server Static
  • Server SPA

Creating a new modules

  • Server Module Builder
  • Server Express Wrapper

Server HTTP(S)

It helps to run Skazka app as node.js server.

How to install

npm i @skazka/server @skazka/server-http

With yarn:

yarn add @skazka/server @skazka/server-http

Optionally you can add error handler, logger, router, request and response:

npm i @skazka/server-router @skazka/server-error @skazka/server-logger @skazka/server-request @skazka/server-response

With yarn:

yarn add @skazka/server-router @skazka/server-error @skazka/server-logger @skazka/server-request @skazka/server-response

How to use

const App = require('@skazka/server');
const Router = require('@skazka/server-router');
        
const error = require('@skazka/server-error');
const logger = require('@skazka/server-logger');

const request = require('@skazka/server-request');
const response = require('@skazka/server-response');
        
const server = require('@skazka/server-http');
        
const app = new App();
const router = new Router();
        
app.all([
  error(),
  logger(),
  request(),
  response(),
]);
    
app.then(async (ctx) => {
  // it works for each request
});
    
router.get('/data').then(async (ctx) => {
  // it works only for "/url"
  return ctx.response('data'); 
});
        
app.then(router.resolve());
        
server.createHttpServer(app);

Run with ssl/tls

const { readFileSync } = require('fs');
const { resolve } = require('path');

const options = {
  key: readFileSync(resolve(__dirname, 'ssl', 'key.pem')),
  cert: readFileSync(resolve(__dirname, 'ssl', 'cert.pem'))
};
        
server.createHttpsServer(options, app);

With pem

Pem package helps to generate pem files for you. It could be useful for testing.

npm i pem

With yarn:

yarn add pem
const days = 1;
const selfSigned = true;
    
pem.createCertificate({ days, selfSigned }, (err, { serviceKey: key, certificate: cert }) => {
  if (err) {
    throw err;
  }
  server.createHttpsServer({ key, cert }, app);
});

And async/await:

const util = require('util');

const createCertificate = util.promisify(pem.createCertificate);

(async () => {
  const days = 1;
  const selfSigned = true;
  
  const { 
    serviceKey: key, 
    certificate: cert,
  } = await createCertificate({ days, selfSigned });
  
  server.createHttpsServer({ key, cert }, app);
})();

Port

By default server uses port from process.env.PORT:

PORT=3000 node index.js

But you can set port in the code:

server.createHttpServer(app, 80);
server.createHttpsServer({ key, cert }, app, 443);
Last updated by EvheniyBystrov
← Server HelmetServer GraphQL →
  • How to install
  • How to use
    • Run with ssl/tls
    • With pem
    • Port
Copyright © 2019 SkazkaJS