Skip to content

nest 开启静态服务器

目的:为了提供像单页应用程序(SPA)这样的静态内容

方式 1:@nestjs/serve-static

(1)安装依赖包

bash
npm install --save @nestjs/serve-static

(2)配置

安装过程完成后,我们可以将其导入 ServeStaticModule 根目录 AppModule 并通过将配置对象传递给 forRoot()方法对其进行配置。

ts
// app.Module.ts

import { Module } from "@nestjs/common";
import { AppController } from "./app.controller";
import { AppService } from "./app.service";
import { PersonModule } from "./person/person.module";
import { ServeStaticModule } from "@nestjs/serve-static";  
import { join } from "path"; 

@Module({
  imports: [
    PersonModule,
    ServeStaticModule.forRoot({ 
     // 托管public目录, 访问地址 /public
      rootPath: join(__dirname, "..", "public"), 
    }), 
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

最后访问 http://localhost:3000/public, 就能访问到 /public里面的 index.html文件内容了

方式2:app.useStaticAssets

ts
// main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';  
import { join } from 'path'; 

async function bootstrap() {
  const app = await NestFactory.create(AppModule); 
  const app = await NestFactory.create<NestExpressApplication>(AppModule);  

  // 托管public目录, 访问地址 /static
  app.useStaticAssets(join(__dirname, '..', 'public'), { prefix: '/static'});   
  await app.listen(3000);
}
bootstrap();

提示

注意要给create方法传入NestExpressApplication的泛型参数才有useStaticAssets这些方法