您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

server.ts 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import 'zone.js/dist/zone-node';
  2. import 'reflect-metadata';
  3. import { ngExpressEngine } from '@nguniversal/express-engine';
  4. import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader';
  5. import { resolve } from 'path';
  6. import { enableProdMode } from '@angular/core';
  7. const domino = require('domino');
  8. const win = domino.createWindow('');
  9. global['window'] = win;
  10. global['document'] = win.document;
  11. global['alert'] = console.log
  12. global['XMLHttpRequest'] = require('xmlhttprequest').XMLHttpRequest;
  13. export async function attachExpress(app, staticDir = "./dist", loggerService = console) {
  14. const STATIC_FOLDER = resolve(process.cwd(), staticDir);
  15. enableProdMode();
  16. const bundle = require(staticDir + '/server/main');
  17. const ServerApiService = bundle.ServerApiService
  18. const serviceObj = new ServerApiService(loggerService)
  19. await serviceObj.initialize()
  20. app.set('view engine', 'html');
  21. app.engine(
  22. 'html',
  23. ngExpressEngine({
  24. bootstrap: bundle.AppServerModuleNgFactory,
  25. providers: [
  26. provideModuleMap(bundle.LAZY_MODULE_MAP),
  27. {
  28. provide: bundle.LoggerService,
  29. deps: [],
  30. useValue: loggerService
  31. },
  32. {
  33. provide: bundle.IApiService,
  34. deps: [],
  35. useValue: serviceObj,
  36. }
  37. ]
  38. })
  39. );
  40. app.get('*', (req, res) => {
  41. //console.log('*', req.path);
  42. res.render(resolve(STATIC_FOLDER, 'browser/index'), { req, res })
  43. });
  44. }