Nest JS 路线未映射

问题描述 投票:0回答:1

import { Controller, Post, UploadedFile, Get, Param, Res, UseInterceptors, StreamableFile, Header } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { Response } from 'express';
import { createReadStream } from 'fs';
import { join } from 'path';

@Controller()
export class FileController {

    @Get('file/:fileName')
    @Header('Content-Type', 'application/json')
    downloadFile(@Res({ passthrough: true }) res: Response, @Param('fileName') fileName): StreamableFile {
        const file = createReadStream(join(process.cwd(), fileName));
        res.set({
            'Content-Disposition': 'attachment; filename=' + fileName
        });
        return new StreamableFile(file);
    }


    @Get('video/:fileName')
    viewVideo(@Res() res: Response, @Param('fileName') fileName: string): string {
        const videoPath = join(process.cwd(), fileName)
        return fileName;
    }

    @Post('upload')
    @UseInterceptors(FileInterceptor('file'))
    uploadFile(@UploadedFile() file: Express.Multer.File) {
        console.log(file.filename);
        console.log(file.path);
        return file.filename;
    }

}

这是我的嵌套js代码

以下是所需日志

[Nest] 28008 - 04/18/2024,下午 1:51:21 日志 [RoutesResolver] FileController {/file}:+0ms [Nest] 28008 - 04/18/2024, 1:51:21 PM 日志 [RouterExplorer] 映射的 {/file/:fileName, GET} 路由 +1ms [Nest] 28008 - 04/18/2024, 1:51:21 PM 日志 [RouterExplorer] 映射的 {/file/upload, POST} 路由 +0ms

我的 video/:fileName 路线未映射。

如何解决? 我已经重新启动应用程序好几次了。

我多次重新启动应用程序,也尝试了不同的路线,尝试过聊天gpt但无法解决。

javascript express nestjs
1个回答
0
投票

这是因为您在方法参数中使用了

@Res() res: Response
,在这种情况下,NEST 希望您处理响应数据,包括设置标头、状态代码和发送响应。

删除

@Res() res: Response
,端点应该映射。

© www.soinside.com 2019 - 2024. All rights reserved.