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

Vitesse框架Vue3+TypeScript项目引入AWS SDK依赖启动报错如何解决?

问题根因

你安装的@aws-sdk/credential-providers、@aws-sdk/client-dynamodb是Node.js环境专用的SDK包,内部依赖了buffer、fs、http、child_process等仅Node.js内置的原生模块,浏览器运行环境没有这些API,因此Vite在预编译依赖时会抛出找不到对应导出的报错。该问题和TypeScript本身无关,属于运行环境不匹配导致的。

推荐解决方案(生产环境可用)

绝对不要在前端项目中直接调用AWS DynamoDB服务:前端代码会完全暴露给所有访问用户,你配置的AWS访问密钥会直接泄露,任何人都可以随意操作你的DynamoDB资源,存在严重安全风险。
正确的做法是新增一层后端服务(可以是Node.js接口、AWS Lambda、Cloudflare Worker等),前端只调用你自己的后端接口,由后端服务负责和AWS DynamoDB交互,AWS密钥仅保存在后端的环境变量中。

临时调试方案(仅本地测试用,禁止上生产)

如果只是本地临时调试需要前端直接调用,可以通过给Vite配置Node模块polyfill解决报错:

  1. 安装polyfill依赖
pnpm add -D vite-plugin-node-polyfills empty-module
  1. 修改项目根目录的vite.config.ts配置,添加polyfill插件:
import { defineConfig } from 'vite'
import { nodePolyfills } from 'vite-plugin-node-polyfills'
// 保留你原来Vitesse配置里的其他插件导入

export default defineConfig({
  plugins: [
    // 原有插件(vue、unocss等)保持不变,新增下面的polyfill插件
    nodePolyfills({
      include: ['buffer', 'http', 'url', 'os', 'path', 'crypto'],
      globals: {
        Buffer: true,
        process: true,
      },
    }),
  ],
  resolve: {
    alias: {
      // 浏览器无法polyfill的模块直接指向空模块
      'fs': 'empty-module',
      'child_process': 'empty-module',
    }
  }
})
  1. 调整AWS SDK初始化代码,使用浏览器环境支持的凭证提供方式,比如Cognito身份池凭证,不要使用本地文件、EC2实例元数据等仅Node.js环境支持的凭证获取方式。

注意:该方案仅适用于本地临时调试,绝对不要部署到线上生产环境,会导致AWS密钥泄露

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:27:04