在项目根目录下通过命令行或文件管理器手动创建这两个文件。
main.server.ts:
import { enableProdMode } from '@angular/core';
import { ngExpressEngine } from '@nguniversal/express-engine';
import * as express from 'express';
import { join } from 'path';
import { AppServerModule } from './app.server.module'; // 导入app.server.module.ts
// 生产模式下启用模式
enableProdMode();
const app = express();
// 设置Angular Universal
app.engine('html', ngExpressEngine({
bootstrap: AppServerModule
}));
app.set('view engine', 'html');
app.set('views', join(__dirname, 'dist'));
app.get('*.*', express.static(join(__dirname, 'dist')));
// 所有其他路由请求都返回渲染的Angular应用程序
app.get('*', (req, res) => {
res.render('index', { req });
});
const PORT = process.env.PORT || 4200;
app.listen(PORT, () => {
console.log(`listening on http://localhost:${PORT}!`);
});
app.server.module.ts:
import { NgModule } from '@angular/core';
import { ServerModule } from '@angular/platform-server';
import { AppModule } from './app.module'; // 导入app.module.ts
import { AppComponent } from './app.component'; // 导入app.component.ts
@NgModule({
imports: [
AppModule,
ServerModule
],
bootstrap: [AppComponent]
})
export class AppServerModule {}
之后再运行安装Angular Universal的命令即可。