如何在Nest.js中提供静电Html文件?
我要提供位于Nest项目外部的
/dist
文件夹中的静电HTML文件。index.html
加载成功,但无法加载任何JS文件(404
错误)。
我有一个Node/Express.js项目,它使用
app.use('/', express.static('../client/dist'))
并且工作正常。
但是,在Nest项目中
app.setBaseViewsDir(join(__dirname, '../../client/dist'))
不起作用。
在AppController
我尝试了
import { Response } from 'express';
@Get()
get(@Res() res: Response) {
res.sendFile('index.html', {
root: '../client/dist',
});
}
但没有运气。
如前所述,index.html
加载成功。因此,问题不是一条错误的道路。index.html
中的src路径错误也不是问题,因为在Express项目中使用的是完全相同的文件。
/dist
|-index.html
|-main.js
|-etc.
在index.html:
<script type="text/javascript" src="main.js"></script>
当我将dist文件夹放入Nest项目(并调整路径)时,它也不起作用。
我找到了解决方案:
我现在使用EXPRESS模块:
import * as express from 'express';
...
app.use('/', express.static('../client/dist'));
解决方案
关于Nest.js的official documentation,应该这样服务静电文件:
安装所需的软件包:
npm install --save @nestjs/serve-static
更新app.module.ts如下所示:
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: join(__dirname, '..', 'client'), // <-- path to the static files
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
相关文章