在 NestJS 上提供图像文件总是出现 404 错误

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

我正在研究 NestJS。我想向客户提供图像文件。但它不起作用。

这是我的项目结构。

/MyProject
    /src
        app.module.ts
        ..
/uploads
    myimage.png

图像文件位于/uploads中。此外,我在 main.ts 中设置了前缀 url,如下所示,

app.setGlobalPrefix('file');

这是我的 ServeStaticModule 在 app.module.ts 中,

    ServeStaticModule.forRoot({
      rootPath: join(__dirname, '..', '../../uploads'),
      serveRoot: '/public/'
    })

当我尝试访问图像时,

http://localhost:5004/file/public/myimage.png 或

http://localhost:5004/public/myimage.png 或

http://localhost:5004/file/public/uploads/myimage.png 或

http://localhost:5004/public/uploads/myimage.png 或

我会从服务器收到 404 错误。

错误是这样的

{“message”:“无法获取/file/public/myimage.png”,“错误”:“未找到”,“statusCode”:404}

感谢您的每一次帮助。

node.js nestjs nest
1个回答
0
投票

我刚刚遇到这个问题。经过深入研究后发现问题可能源于路径。之前

  // Serve static files from the 'uploads' directory

app.useStaticAssets(join(__dirname, '..', '上传'), { 前缀:'/上传/', }); 当我记录像 console.log('静态文件目录:', join(__dirname, '..', 'uploads')); 这样的路径时记录为静态文件目录:C:\Workspace\my-fkn-prj\uploads

当您使用 npm run start:prod 或 npm run build 等命令运行应用程序时,dist 文件夹是 NestJS 将 TypeScript 代码编译为 JavaScript 的默认目录。但不确定为什么 npm run start:dev 会发生这种情况。需要检查一下。

这就是为什么 join(__dirname, '..', 'uploads') 路径解析为 C:\Workspace\my-fkn-prj\dist\uploads - 它假设 uploads 文件夹位于 dist 目录内。

之后

  // Serve static files from the 'uploads' directory

app.useStaticAssets(join(__dirname, '..', '..', '上传'), { 前缀:'/上传/', });

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