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

如何在SvelteKit中正确定义并使用BASE_URL环境变量?

Svelte Kit环境变量未定义问题解决方案

核心原因

Svelte Kit对客户端可访问的公共环境变量有强制命名规则:必须以PUBLIC_作为前缀。你当前定义的DEV_BASE_URL和PROD_BASE_URL不符合该规则,因此无法通过$env/dynamic/public读取到。

规范解决步骤

1. 配置环境变量

推荐通过分环境文件实现开发/生产环境的变量区分,更清晰易维护:

  • 创建.env.development(开发环境):
    PUBLIC_BASE_URL="http://127.0.0.1:8080"
    
  • 创建.env.production(生产环境):
    PUBLIC_BASE_URL="https://example.com"
    

Svelte Kit会自动根据运行环境加载对应文件:启动开发服务时加载.env.development,生产构建时加载.env.production。

若不想分文件,也可在单个.env文件中通过NODE_ENV判断,但分文件方案更直观。

2. 在组件中读取变量

优先使用静态导入(编译时注入,性能更优),代码示例:

<script>
  import { PUBLIC_BASE_URL } from '$env/static/public';
  console.log('当前BASE_URL:', PUBLIC_BASE_URL);
</script>

如果需要运行时动态读取,可使用动态导入:

<script>
  import { env } from '$env/dynamic/public';
  console.log('当前BASE_URL:', env.PUBLIC_BASE_URL);
</script>

3. 验证生效

  • 开发环境:执行npm run dev,控制台会输出http://127.0.0.1:8080
  • 生产环境:执行npm run build后启动服务,控制台会输出https://example.com

注意事项

  • 无PUBLIC_前缀的变量属于私有环境变量,仅能在服务端代码(如+page.server.js、+server.js)中读取,不能在客户端组件中使用。
  • 务必将.env、.env.development、.env.production添加到.gitignore,避免敏感信息泄露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:55:18