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

Vercel部署SvelteKit时运行时环境变量未定义问题求助

解决SvelteKit部署Vercel后运行时私有环境变量undefined的问题

核心原因

$env/dynamic/private 读取的是Serverless/Edge函数运行时的私有环境变量,这类变量不会在构建阶段注入,而是在函数执行时从Vercel的运行时环境中读取。之前的操作要么用错了变量传递方式,要么存在命令拼写错误导致配置未生效。

具体修复步骤

1. 修正CircleCI中的命令拼写错误

你CircleCI配置里的enviornment是拼写错误,正确应为environment,这会导致vercel pull无法拉取对应环境的配置:

# 修正后的pull命令
vercel pull --yes environment=preview --token=$VERCEL_TOKEN

2. 在CI中直接注入运行时环境变量

不要用--build-env(这是给构建时变量用的),改用vercel env add命令将CircleCI中的变量直接添加到Vercel对应环境的运行时变量中:

# 在pull之后添加这一步,注入MY_ENV到Vercel preview环境
vercel env add MY_ENV preview --token=$VERCEL_TOKEN <<< "$MY_ENV"
# 如果还有其他变量比如MY_REGION,同理添加
vercel env add MY_REGION preview --token=$VERCEL_TOKEN <<< "$MY_REGION"

注:如果部署的是生产环境,把preview换成production即可。

3. 确认Vercel UI中的变量配置(可选)

如果通过CI注入后仍有问题,手动在Vercel UI中检查:

  • 进入项目的「Settings」→「Environment Variables」
  • 添加MY_ENV,确保变量的「Environment」选择对应环境(Preview/Production),并且不要勾选「Expose to Serverless Functions only」以外的选项(默认就是,确保它是运行时可用的私有变量)

4. 修正代码中的拼写错误

你的+layout.server.js里MY_REGOIN是拼写错误,应为MY_REGION,避免后续其他变量异常:

// 修正后
let my_region = env.MY_REGION;

验证部署

完成以上步骤后,重新运行CircleCI流水线,部署到Vercel后,运行时函数就能正确读取到MY_ENV变量了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:03:24