SvelteKit 1.0环境变量使用求助:Netlify无服务器函数配置失败
解决方案
先明确你的代码场景,分两种情况处理:
情况1:db-helper是Netlify独立无服务器函数(放在netlify/functions/目录下)
- 本地开发:
- 无需安装
dotenv,也不用手动引入 - 必须用
netlify dev命令启动项目,不能直接用svelte-kit dev——Netlify CLI会自动加载项目根目录.env文件里的变量 - 函数内直接用
process.env.MONGODB_DATABASE获取变量,不需要加VITE前缀
- 无需安装
- 部署到Netlify:
- 登录Netlify控制台,进入你的站点,在「Site settings > Environment variables」里添加所有环境变量(包括敏感项)
- 函数内依然用
process.env.MONGODB_DATABASE读取
情况2:db-helper是SvelteKit服务器端代码(比如src/lib/server/下的工具文件或API路由)
- 本地开发:
- 敏感变量放在项目根目录的
.env文件(记得把.env加入.gitignore,避免提交到仓库),变量名不要加VITE前缀 - 用
svelte-kit dev启动项目即可,SvelteKit会自动把.env里的变量注入到process.env中 - 代码里直接用
process.env.MONGODB_DATABASE获取
- 敏感变量放在项目根目录的
- 部署到Netlify:
- 在Netlify控制台添加环境变量,无需前缀
- 服务器端代码依然用
process.env.MONGODB_DATABASE读取
你之前操作的问题点
- 手动引入
dotenv:完全没必要,不管是Netlify函数还是SvelteKit服务器端,都不需要手动加载dotenv - 使用
import.meta.env:这是Vite给前端代码用的,服务器端/Netlify函数是Node环境,只能用process.env - 加VITE前缀:VITE前缀的变量会被暴露给浏览器,敏感变量绝对不能加这个前缀;而且服务器端也不需要这个前缀来读取变量
内容的提问来源于stack exchange,提问作者Pick Avana
相关产品推荐
相关产品推荐

