Vite React-ts部署Vercel后import.meta.env环境变量未生效问题
我来帮你捋捋可能的问题点,之前踩过类似的坑,这些方向可以逐个排查:
检查Vercel环境变量的命名与前缀
Vite要求环境变量必须以VITE_开头才能被注入到客户端代码中,你在Vercel配置的变量名必须和代码里的VITE_VERCEL_XXX完全一致——包括大小写、前缀和后缀,不能有拼写错误。比如别把VITE_写成Vite_或者漏掉下划线。确认Vercel环境变量的生效环境
在Vercel配置环境变量时,要注意选择对应的环境(Production/Preview/Development)。如果你只在Development环境下配置了变量,那Production部署的版本是拿不到的。进入Vercel项目的「Settings」→「Environment Variables」,检查目标部署环境下是否存在该变量。验证Vercel的构建命令与模式
Vite的环境变量是在构建阶段注入的,所以要确保Vercel用了正确的构建命令。Vite项目默认的构建命令是npm run build,你可以在Vercel项目的「Settings」→「Build & Development Settings」里确认。另外,也可以尝试在构建命令里明确指定模式:npm run build --mode production确保Vite以生产模式构建,正确读取对应环境的变量。
查看Vercel构建日志,确认变量是否被注入
部署完成后,进入Vercel项目的「Deployments」页面,点击对应部署记录的「Logs」,搜索你配置的变量名(比如VITE_VERCEL_XXX),看看构建过程中是否有加载到这个变量。如果日志里找不到,说明变量配置没有生效,需要重新检查配置。清除缓存后重新部署
Vercel有时候会复用之前的构建缓存,导致新配置的环境变量没有被加载。你可以在部署记录里选择「Redeploy」,然后勾选「Clear build cache and deploy」,强制重新构建并加载最新的环境变量。检查Vite配置文件的envPrefix设置
打开你的vite.config.ts,看看有没有修改过envPrefix选项。Vite默认的前缀是VITE_,如果你改成了其他值(比如APP_),那Vercel里的变量名也需要对应改成新前缀开头的名字,否则无法被Vite识别。
按照上面的步骤逐一排查,应该能找到问题所在。我之前就是因为在Vercel里把环境变量的前缀写错了,导致生产环境拿不到值,改完重新部署就正常了。
内容的提问来源于stack exchange,提问作者Gabriel Silva

