我在Angular 8上使用了Universal,并且一切正常,但是在新版本中遇到了一些麻烦
似乎如果不使用angular应用程序编译server.ts,就无法再使用ngExpressEngine。您可以完全做到这一点。
我有一个用js编写的大型代码库,用于我的快速服务器,我无法用我的有角度的应用程序对其进行编译,就像用原理图设置的那样。在基本设置中,您只需将所有内容编译在一起,然后单击node ../dist/myapp/server/main.js
,即可启动“通用”服务器。
所以我希望我能做的是在没有server.ts的情况下构建服务器端的角度应用程序,然后在需要时通过主要应用程序中的ngExpressEngine使用该构建
================================================ =========================>
编辑大卫的答案
require("zone.js/dist/zone-node"); const { ngExpressEngine } = require("@nguniversal/express-engine"); const express = require("express"); const app = express(); const { join } = require("path"); const { AppServerModule } = require("./dist/ttmodel/server/main"); const { existsSync } = require("fs"); const { APP_BASE_HREF } = require("@angular/common"); app.use(express.static(join(__dirname, "dist"))); const distFolder = join(process.cwd(), "dist/ttmodel/browser"); const indexHtml = existsSync(join(distFolder, "index.original.html")) ? "index.original.html" : "index"; app.engine( "html", ngExpressEngine({ bootstrap: AppServerModule, }) ); app.set("view engine", "html"); app.set("views", distFolder); app.get( "*.*", express.static(distFolder, { maxAge: "1y", }) ); app.get("*", (req, res) => { res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }], }); }); app.listen(3000);
你的意思是那样的?我尝试过,但是没有用,最后得到
Error: ENOENT: no such file or directory, open 'app.component.html'
在原始server.ts上,您直接从'./src/main.server导入AppServerModule'
我尝试使用renderModule
中的renderModuleFactory
和@angular/platform-server
,但我也无法使用它。
我在Angular 8上使用通用,但一切正常,但新版本出现了一些麻烦。似乎不再使用ngExpressEngine时就无法编译...
我可能是错的(并且我还没有对此进行测试),但是我认为您可以根据需要从编译的角度服务器包中导入自己的服务器。