Javascript 如何在NestJS中提供静态图像

Javascript 如何在NestJS中提供静态图像,javascript,node.js,express,mean-stack,nestjs,Javascript,Node.js,Express,Mean Stack,Nestjs,我开始学习MEAN stack,当我转到Express时,我看到Express框架中存在一个称为NestJS的额外层。它有我想要的一切,它有一个角度一样的语法,所以对我来说是完美的 但每一个新步骤都是一场噩梦,文档根本没有用处。现在,我正在与框架进行斗争,以实现为图像提供服务,而不使用API进行此类调用 我尝试了我在互联网上找到的所有东西,例如: 梅因酒店 import { NestFactory } from '@nestjs/core'; import { AppModule } from

我开始学习MEAN stack,当我转到Express时,我看到Express框架中存在一个称为NestJS的额外层。它有我想要的一切,它有一个角度一样的语法,所以对我来说是完美的

但每一个新步骤都是一场噩梦,文档根本没有用处。现在,我正在与框架进行斗争,以实现为图像提供服务,而不使用API进行此类调用

我尝试了我在互联网上找到的所有东西,例如:

梅因酒店

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as bodyParser from 'body-parser';
import * as express from 'express';
import { join } from 'path';

import { NestExpressApplication } from '@nestjs/platform-express';



declare const module: any;

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

  app.useStaticAssets(join(__dirname, '..', 'public'));




  app.enableCors({
    origin: true,
    methods: 'GET,HEAD,PUT,PATCH,POST,DELETE,OPTIONS',
    credentials: true,
  });

//I tried this 2 options (https://docs.nestjs.com/techniques/mvc) (https://whatthecode.dev/serve-static-files-with-nest-js/)
  app.use('/resources', express.static(process.cwd() + '\\resources'));
  app.useStaticAssets(join(__dirname, '..', '\\public'));

  app.use(bodyParser.json({ limit: '50mb' }));
  app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
 
  //console.log(process.cwd());


  await app.listen(3000);

  if (module.hot) {
    module.hot.accept();
    module.hot.dispose(() => app.close());
  }

}
bootstrap();

从'@nestjs/core'导入{NestFactory};
从“./app.module”导入{AppModule};
从“主体解析器”导入*作为主体解析器;
从“快递”以快递方式导入*;
从“路径”导入{join};
从'@nestjs/platform express'导入{NestExpressApplication};
声明常量模块:任意;
异步函数引导(){
const app=wait NestFactory.create(AppModule);
app.useStaticAssets(join(uu dirname,“…”,“public”);
app.enableCors({
来源:对,
方法:“获取、头部、放置、修补、发布、删除、选项”,
证书:正确,
});
//我尝试了两种选择(https://docs.nestjs.com/techniques/mvc) (https://whatthecode.dev/serve-static-files-with-nest-js/)
app.use('/resources',express.static(process.cwd()+'\\resources');
app.useStaticAssets(join(uu dirname,“…”,“\\public”);
use(bodyParser.json({limit:'50mb'}));
use(bodyParser.urlencoded({limit:'50mb',extended:true}));
//log(process.cwd());
等待应用程序。聆听(3000);
如果(模块热){
module.hot.accept();
module.hot.dispose(()=>app.close());
}
}
bootstrap();
我尝试将其放入app.module中,如下所示(它工作正常,但始终查找index.html而不是图像):


从“./anists/anists.module”导入{animalmodule};
从“./species/species.module”导入{SpeciesModule};
从“./auth/auth.module”导入{AuthModule};
从“./users/users.module”导入{UsersModule};
从“./bride/bride.module”导入{BreedModule};
从“./state/state.module”导入{StateModule};
从“./photo/photo.module”导入{PhotoModule};
@模块({
进口:[
ServeStaticModule.forRoot({

rootPath:join(uu dirname,…,,,,,,,,/这就是我所做的:

  • 在app.module.ts中

     import { ServeStaticModule } from '@nestjs/serve-static/dist/serve-static.module';
     import { join } from 'path';
    
     @Module({
         imports: [
             ServeStaticModule.forRoot({
                 rootPath: join(__dirname, '..', 'public'),
             }),
         ],
     })
    
  • 然后我在与“src”、“dir”等相同的级别上创建了“public”dir

  • 该文件位于:https://my-url/file.jpg


  • 考虑到这样的配置(看起来还可以),您是否可以共享您的静态文件夹
    public
    目录结构和您尝试过的一些静态资产的简单GET?嗨,我有这样的结构:project/resources/tmp/files project/public(只是为了尝试这个名称,因为在示例中更常见)并且我的GET请求被放在浏览器或公用文件夹中。如果您需要其他信息,请告诉我。谢谢,您可以按如下方式配置您的根路径:
    rootPath:join(u dirname,“…”,“public”)
    ?尝试将您的
    a.jpg
    放入project/public,并通过localhost:3000/a.jpgrootPath:join(uu dirname,…,,,,,,,,,,,,,,,,,,,)获取它。join(uuu dirname,,,,,,,,,,,,,,,,,,,,)位于原始问题的第二个文件中,我尝试了这个请求,它返回了一个Firefox找不到的404路由。我已经这样做了,但有这个错误“enoi在\dist\public\index.html中找不到该文件
     import { ServeStaticModule } from '@nestjs/serve-static/dist/serve-static.module';
     import { join } from 'path';
    
     @Module({
         imports: [
             ServeStaticModule.forRoot({
                 rootPath: join(__dirname, '..', 'public'),
             }),
         ],
     })