如何使用 Vite 或 Svite 在 Svelte 中加载环境变量
How to load environment variables in Svelte using Vite or Svite
我一直在尝试找出在 Svelte 应用程序中为 API 配置实施环境变量的最佳实践。据我所知,我们必须使用 Vite 或 Svite 才能使其工作。谁能帮我找到解决办法??
我就是这样做的,但我敢打赌还有其他好的做法
我利用dotenv and $lib
provided by SvelteKit.
下面是我的文件夹结构和相关js:
├── sveltekit-project/ // Root
| ├── src/
| | ├── lib/
| | | ├── env.js
| | | ├── other.js
| | | ...
| | |
| | ├── routes/
| | | ├── main.svelte
| | | ...
| | ├── app.html
| | ...
| ├── .env
/** /src/lib/env.js **/
import dotenv from 'dotenv'
dotenv.config()
export const env = process.env
/** /src/lib/other.js **/
import { env } from '$lib/env'
const secret = env.YOUR_SECRET
顺便推荐一下“我如何使用环境变量?”参加 SvelteKit FAQ。这似乎与您关心的问题非常相关,但恐怕这意味着需要一些变通方法而不是 VITE_*
变量..
警告
VITE_
前缀会将敏感信息暴露给客户端! More info
通常情况下,我会简单地删除这个答案,但很明显整个 import.meta.env.VITE_SECRET_PASSWORD
并不是一个聪明的设计。根据 https://vitejs.dev/guide/env-and-mode.html#env-files 处的安全说明警告,使用不安全的 .env 变量有什么意义??
作为开发人员,我的期望是我可以使用 .env 变量来存储安全信息。
让这个答案成为一个警告:不要这样做。
下面是我的原回复:
我在这里挣扎了一段时间..
环境变量文件,必须命名为.env
:
VITE_SENDGRID_API_KEY=SG.9999999999....999999999999
我花了太多时间才弄清楚 sendgrid.env
作为文件名是行不通的。
我在 /src/lib 目录中添加了一个名为 env.js
的文件。以下是该文件的完整内容:
export const ENV_OBJ = {
SENDGRID_API_KEY: import.meta.env.VITE_SENDGRID_API_KEY,
TEST: "test, test, test"
};
然后当我在其他地方需要它时...
import { ENV_OBJ } from '$lib/env'
// console.log("API Key.test: ", ENV_OBJ.TEST);
sgMail.setApiKey(ENV_OBJ.SENDGRID_API_KEY);
我正在使用 SvelteKit,Javascript,等等...没有额外的 dotenv。保持简单,让它变得容易。
我一直在尝试找出在 Svelte 应用程序中为 API 配置实施环境变量的最佳实践。据我所知,我们必须使用 Vite 或 Svite 才能使其工作。谁能帮我找到解决办法??
我就是这样做的,但我敢打赌还有其他好的做法
我利用dotenv and $lib
provided by SvelteKit.
下面是我的文件夹结构和相关js:
├── sveltekit-project/ // Root
| ├── src/
| | ├── lib/
| | | ├── env.js
| | | ├── other.js
| | | ...
| | |
| | ├── routes/
| | | ├── main.svelte
| | | ...
| | ├── app.html
| | ...
| ├── .env
/** /src/lib/env.js **/
import dotenv from 'dotenv'
dotenv.config()
export const env = process.env
/** /src/lib/other.js **/
import { env } from '$lib/env'
const secret = env.YOUR_SECRET
顺便推荐一下“我如何使用环境变量?”参加 SvelteKit FAQ。这似乎与您关心的问题非常相关,但恐怕这意味着需要一些变通方法而不是 VITE_*
变量..
警告
VITE_
前缀会将敏感信息暴露给客户端! More info
通常情况下,我会简单地删除这个答案,但很明显整个 import.meta.env.VITE_SECRET_PASSWORD
并不是一个聪明的设计。根据 https://vitejs.dev/guide/env-and-mode.html#env-files 处的安全说明警告,使用不安全的 .env 变量有什么意义??
作为开发人员,我的期望是我可以使用 .env 变量来存储安全信息。
让这个答案成为一个警告:不要这样做。
下面是我的原回复:
我在这里挣扎了一段时间..
环境变量文件,必须命名为.env
:
VITE_SENDGRID_API_KEY=SG.9999999999....999999999999
我花了太多时间才弄清楚 sendgrid.env
作为文件名是行不通的。
我在 /src/lib 目录中添加了一个名为 env.js
的文件。以下是该文件的完整内容:
export const ENV_OBJ = {
SENDGRID_API_KEY: import.meta.env.VITE_SENDGRID_API_KEY,
TEST: "test, test, test"
};
然后当我在其他地方需要它时...
import { ENV_OBJ } from '$lib/env'
// console.log("API Key.test: ", ENV_OBJ.TEST);
sgMail.setApiKey(ENV_OBJ.SENDGRID_API_KEY);
我正在使用 SvelteKit,Javascript,等等...没有额外的 dotenv。保持简单,让它变得容易。