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

Vite+SvelteKit:如何在服务端安全访问私有环境变量?

服务端私有环境变量访问问题(SvelteKit)

问题场景

  • 正在制作POC,使用src/lib/db.ts文件,代码如下:
console.log(import.meta.env.MONGO_URI, import.meta.env.SSR);

执行后输出:

undefined true
  • .env文件中已定义MONGO_URI,使用VITE_MONGO_URI可以查看变量值,但不想将该变量暴露给客户端;经检查db.ts未被打包到客户端,且import.meta.env.SSR为true,说明打包工具识别这是服务端代码。
  • 核心问题:如何在服务端安全访问私有环境变量?

解决方案

SvelteKit提供了专门的环境变量配置机制,可精准区分服务端私有变量与客户端可访问变量:

  1. 配置.env文件:在项目根目录的.env中直接定义私有变量(无需添加VITE_前缀):
MONGO_URI=你的MongoDB连接地址
  1. 修改SvelteKit配置文件:在svelte.config.js中配置kit.env,指定服务端可访问的私有变量列表:
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';

export default {
  preprocess: vitePreprocess(),
  kit: {
    env: {
      // 列出仅服务端可访问的私有环境变量
      private: ['MONGO_URI'],
      // 若有需要暴露给客户端的变量,需添加VITE_前缀并放入public数组
      public: []
    }
  }
};
  1. 在服务端代码中访问变量:
    在src/lib/db.ts这类服务端专属代码中,直接通过import.meta.env.MONGO_URI即可获取变量值,该变量不会被打包到客户端代码中,确保安全性。

注意:需保证db.ts仅在服务端逻辑中被引用(比如在+server.ts、+page.server.ts中导入),避免被客户端代码意外引用导致变量暴露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:51:20