Vite+Vue3部署AWS后出现memoizedProperty未定义错误求助
解决Vite+Vue3部署后
Uncaught TypeError: Cannot read properties of undefined (reading 'memoizedProperty')问题 这个错误本质是AWS SDK v2与Vite底层的Rollup打包工具兼容不佳导致的,试试下面几个方案:
方案1:升级到AWS SDK v3(强烈推荐)
AWS SDK v3是官方主推的模块化版本,天生支持ES模块,完全适配Vite的打包逻辑,从根源上解决这类兼容问题:
- 卸载旧版SDK:
npm uninstall aws-sdk - 按需安装v3的具体模块,比如使用S3服务就安装:
npm install @aws-sdk/client-s3 @aws-sdk/lib-storage - 替换代码中的导入逻辑,比如原来的
const AWS = require('aws-sdk')改成:import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"
方案2:调整Vite配置兼容SDK v2
如果暂时不想升级,修改vite.config.js的配置,强制Vite正确处理SDK:
import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { fileURLToPath, URL } from 'node:url' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), path: 'path-browserify', 'aws-sdk': 'aws-sdk/dist/aws-sdk.min.js', // 启用别名,指向浏览器兼容版 './runtimeConfig': './runtimeConfig.browser', }, }, optimizeDeps: { include: ['aws-sdk'], // 强制预构建SDK,避免打包时的模块解析问题 }, build: { commonjsOptions: { include: [/aws-sdk/, /node_modules/], // 确保SDK被当作CommonJS模块处理 }, }, })
同时检查代码中是否有动态导入SDK的逻辑,确保浏览器环境下加载的是正确版本。
方案3:直接用CDN引入SDK(临时 workaround)
如果上面的方法都不生效,可以绕过打包环节,直接在index.html中引入CDN版本的SDK:
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1400.0.min.js"></script>
之后代码里直接使用全局的AWS对象即可,无需在项目中安装SDK包。
内容的提问来源于stack exchange,提问作者Radu
相关产品推荐
相关产品推荐

