You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite+React集成AWS S3遇504错误:net::ERR_ABORTED (Outdated Optimize Dep)

解决Vite+React项目集成AWS S3时的504 (Outdated Optimize Dep)错误

我在开发基于Vite和React的项目,尝试集成AWS S3实现图片上传功能,已通过@aws-sdk/client-s3包引入AWS SDK,但本地服务器运行时控制台出现如下错误:

GET http://localhost:5173/node_modules/.vite/deps/@aws-sdk_client-s3.js?v=08d883e2 net::ERR_ABORTED 504 (Outdated Optimize Dep)

相关代码如下:

import AWS from '@aws-sdk/client-s3';
import { v4 as uuidv4 } from 'uuid';
import { dataUrlToBlob } from './dataUrlToBlob';

const s3 = new AWS.S3Client({
    credentials: 
        {
            accessKeyId: import.meta.env.VITE_APP_AWS_ACCESS_KEY_ID,
            secretAccessKey: import.meta.env.VITE_APP_AWS_SECRET_ACCESS_KEY,
            region: import.meta.env.VITE_APP_AWS_REGION
        }
});

export async function uploadImageToS3(dataUrl, filename) {
    const blob = dataUrlToBlob(dataUrl);
    const uniqueFilename = `${uuidv4()}-${filename}`;

    const params = {
        Bucket: import.meta.env.VITE_APP_AWS_BUCKET_NAME,
        Key: uniqueFilename,
        Body: blob,
        ContentType: blob.type,
        ACL: 'public-read'
    };

    const command = new AWS.PutObjectCommand(params)

    try {
        // const data = await s3.send(command);
        console.log(`Image uploaded successfully at ${data} location - ${data.Location} key - ${data.key}`);
    } catch (error) {
        console.log(`Failed to upload image to S3: ${error}`);
    }
}

解决方法

  • 清理Vite缓存并重启服务
    停止当前Vite开发服务器,删除项目根目录下的node_modules/.vite文件夹,然后重新执行npm run dev启动服务。该错误多由Vite依赖优化缓存过期导致,清理缓存可强制Vite重新生成依赖优化文件。

  • 调整AWS SDK导入方式
    将整体导入改为按需导入,减少依赖体积的同时规避缓存问题:

    // 替换原导入语句
    import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
    
    // 初始化客户端时直接使用S3Client
    const s3 = new S3Client({
        credentials: {
            accessKeyId: import.meta.env.VITE_APP_AWS_ACCESS_KEY_ID,
            secretAccessKey: import.meta.env.VITE_APP_AWS_SECRET_ACCESS_KEY,
            region: import.meta.env.VITE_APP_AWS_REGION
        }
    });
    
    // 创建命令时直接使用PutObjectCommand
    const command = new PutObjectCommand(params);
    
  • 更新依赖版本
    执行npm update vite @aws-sdk/client-s3,更新到最新稳定版本,新版本可能修复了依赖优化相关的已知bug。

  • 临时禁用依赖优化
    若上述方法无效,可在vite.config.js中临时禁用依赖优化(会影响开发速度,仅作测试用):

    export default {
      optimizeDeps: {
        disabled: true
      }
    }
    

内容的提问来源于stack exchange,提问作者Opeyemi Odedeyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:32:09