UNPKG

ohayolibs

Version:

Ohayo is a set of essential modules for ohayojp.

77 lines (64 loc) 2.5 kB
// tslint:disable: no-import-side-effect ordered-imports no-string-literal import 'zone.js/dist/zone-node'; import { APP_BASE_HREF } from '@angular/common'; import { ngExpressEngine } from '@nguniversal/express-engine'; import express from 'express'; import { join } from 'path'; import { existsSync } from 'fs'; import { AppServerModule } from './main.server'; const distFolder = join(__dirname, '../browser'); const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index'; // ssr DOM // const domino = require('domino'); // const fs = require('fs'); // const path = require('path'); // const template = fs.readFileSync(path.join(distFolder, 'index.html')).toString(); // const win = domino.createWindow(template); // const g = global as any; // g['window'] = win; // g['document'] = win.document; // The Express app is exported so that it can be used by serverless Functions. export function app() { const server = express(); // Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine) server.engine( 'html', ngExpressEngine({ bootstrap: AppServerModule, }) as any, // abourt as any issues: https://github.com/angular/universal/issues/1210 ); server.set('view engine', 'html'); server.set('views', distFolder); // Example Express Rest API endpoints // server.get('/api/**', (req, res) => { }); // Serve static files from /browser server.get( '*.*', express.static(distFolder, { maxAge: '1y', }), ); // All regular routes use the Universal engine server.get('*', (req, res) => { res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] }); }); return server; } function run() { const port = process.env.PORT || 4000; // Start up the Node server const server = app(); server.listen(port, () => { console.log(`Node Express server listening on http://localhost:${port}`); }); } // Webpack will replace 'require' with '__webpack_require__' // '__non_webpack_require__' is a proxy to Node 'require' // The below code is to ensure that the server is run only when not requiring the bundle. declare const __non_webpack_require__: NodeRequire; const mainModule = __non_webpack_require__.main; const moduleFilename = (mainModule && mainModule.filename) || ''; if (moduleFilename === __filename || moduleFilename.includes('iisnode')) { run(); } export * from './main.server';