Angular Universal 不提供静态资产



我运行简单的Angular Universal SSR(服务器端渲染(应用程序,一切正常,服务器渲染html,但有一个问题。 静态资产,如字体、图像、图标,不会由服务器加载,而是由浏览器加载。我想做的是使用静态资产渲染 html。

我尝试了express.static()功能,但无法使其工作。那么我怎样才能让它工作呢?

通过这里的建议让它工作。

根据本文实现 HTTP 拦截器。它将向具有相对路径的所有请求添加绝对 url,因此运行服务器的 SSR 将起作用。但是,虽然静态预渲染this.request为空,但在这种情况下,您应该将此类请求重定向到您自己的静态服务器,例如http://localhost:3000

创建用于预渲染的 NodeJs 脚本。它将在端口 3000(与拦截器中的端口相同(上运行静态服务器,当它运行时,您可以在子进程中执行npm run prerender。然后侦听子进程上errorclose的事件,并在发生时关闭服务器:

const { spawn } = require('child_process');
// In static server 'listen' callback
const sp = spawn('npm', ['run', 'prerender'], { stdio: 'inherit', timeout: 5 * 60 * 1000 })
sp.on('error', (err) => {
// Pre-rendering failed.
// TODO kill subprocess, close server, end current process with error code
});
sp.on('exit', (code: number) => {
// Pre-rendering is finished
// TODO Close server

if (code !== 0) {
// Pre-rendering failed.
// TODO End current process with error code
}
})

相关内容

  • 没有找到相关文章

最新更新