Guest User

Untitled

a guest
Jul 15th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. // app.server.module.ts
  2. import { NgModule } from '@angular/core';
  3. import { ServerModule } from '@angular/platform-server';
  4. import { ModuleMapLoaderModule } from '@nguniversal/module-map-ngfactory-loader';
  5.  
  6. import { AppModule } from './app.module';
  7. import { AppComponent } from './app.component';
  8.  
  9. @NgModule({
  10. imports: [
  11. ServerModule,
  12. ModuleMapLoaderModule,
  13. AppModule
  14. ],
  15. bootstrap: [AppComponent]
  16. })
  17. export class AppServerModule {}
  18.  
  19. // main.server.ts
  20. export { AppServerModule } from './app/app.server.module';
  21.  
  22. {
  23. "extends": "../tsconfig.json",
  24. "compilerOptions": {
  25. "module": "commonjs",
  26. },
  27. "angularCompilerOptions": {
  28. "entryModule": "app/app.server.module#AppServerModule",
  29. }
  30. }
  31.  
  32. "server": {
  33. "builder": "@angular-devkit/build-angular:server",
  34. "options": {
  35. "outputPath": "dist-server",
  36. "main": "src/main.server.ts",
  37. "tsConfig": "src/tsconfig.server.json"
  38. },
  39. }
  40.  
  41. // server.ts
  42. import 'zone.js/dist/zone-node';
  43. import 'reflect-metadata';
  44.  
  45. import { join } from 'path';
  46. import { readFileSync } from 'fs';
  47. import { enableProdMode } from '@angular/core';
  48. import { renderModuleFactory } from '@angular/platform-server';
  49. import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader';
  50.  
  51. const PORT = Number(process.env.PORT);
  52. const DIST_FOLDER = join(process.cwd(), 'dist');
  53. const document = readFileSync(join(DIST_FOLDER, 'index.html')).toString();
  54.  
  55. import { AppServerModuleNgFactory, LAZY_MODULE_MAP } from './dist-server/main';
  56.  
  57. import * as Koa from 'koa';
  58. import * as Router from 'koa-router';
  59.  
  60. router.get('/*', async (ctx: Koa.Context) => {
  61. const { url } = ctx.request;
  62.  
  63. ctx.body = await renderModuleFactory(AppServerNgModuleFactory, {
  64. document,
  65. url,
  66. extraProviders: [provideModuleMap(LAZY_MODULE_MAP)]
  67. });
  68. });
  69.  
  70. app.use(router.routes());
  71.  
  72. app.listen(PORT, () => {
  73. console.log(`Koa server is running and listening at port ${PORT}`);
  74. });
Add Comment
Please, Sign In to add comment