nestjs - 如何从 NestJS 应用程序提供 2 个 SPA
问题描述
我app.useStaticAssets(ui);
在 NestJS 应用程序中使用来服务我的 SPA。该应用程序在信息亭模式下的浏览器上运行。
新的信息亭硬件有 2 个屏幕,正面,背面。如果我们可以创建另一个 SPA 并在同一个 NestJS 应用程序上提供它,那将是最简单的。
我查看了 NestJS 文档,尝试检查源代码并搜索相关问题,只发现了提示,使用 res.sendFile (不确定资产)或在 NestJS 下使用 express。
有没有办法在直接 NestJS 中做到这一点?
解决方案
当尝试使用 Jay 的答案中的代码时,它根本不适合我,因为我的 Angular 应用程序中的路由在直接通过服务器访问时会出现 404 错误。这是因为内置useStaticAssets()
函数只提供它可以在给定目录中找到的文件,而不是你的 Angular 或 React 路由。
我强烈建议您查看@nestjs/serve-static,因为它允许您像这样提供多个 SPA:
import { Module } from '@nestjs/common';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join as joinPath } from 'path';
@Module({
imports: [
ServeStaticModule.forRoot(
{
rootPath: joinPath(__dirname, '..', 'client-admin'),
serveRoot: '/admin'
},
{
rootPath: joinPath(__dirname, '..', 'client'),
}
)
]
})
export class AppModule {}
但是,在您开始工作之前,您需要确保将您的 SPA 配置为正确安装在这些 URL 上,否则资源(CSS/JS/等)将只是 404。例如,如果您安装管理员应用程序/admin/
,那么您的所有资源文件 URL也index.html
必须加上前缀/admin/
。
推荐阅读
- amazon-web-services - Terraform 验证不同意 terraform 文档
- flutter - 在 Flutter 中删除边框轮廓?
- java - Cannot use Toast correctly in ProgressBar project
- python - How do I access the validation subset from the keras dataset?
- javascript - Dynamic value to template slot name
- jms - NIFI: How to specifiy headers for PublishJMS
- html - 无法使用 rem 和边框使两个 div 相等
- html - How can I select a class in a class in css?
- python - Python: Whats the difference between directly importing and using 'from' keyword
- python-3.x - ImportError: cannot import name SignedJwtAssertionCredentials when oauth2client==4.0.0, neither using PyOpenSSL==20.0.1