Moh*_*adl 136 javascript environment-variables env-file vite
我想.env使用Vite从文件中加载环境变量
我使用了文档import.meta.env中提到的对象
.env文件:
TEST_VAR=123F
Run Code Online (Sandbox Code Playgroud)
import.meta.env当尝试通过->访问此变量时,import.meta.env.TEST_VAR它返回未定义。
那么,我怎样才能访问它们呢?
Mah*_*oud 164
根据文档,您需要为变量添加前缀VITE_:
为了防止意外地将环境变量泄漏给客户端,只有前缀为 VITE_ 的变量才会暴露给 Vite 处理的代码。
如果您尝试访问应用程序源代码外部的环境变量(例如 inside vite.config.js),那么您必须使用loadEnv():
import { defineConfig, loadEnv } from 'vite';
export default ({ mode }) => {
// Load app-level env vars to node-level env vars.
process.env = {...process.env, ...loadEnv(mode, process.cwd())};
return defineConfig({
// To access env vars here use process.env.TEST_VAR
});
}
Run Code Online (Sandbox Code Playgroud)
// vite.config.js
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig, loadEnv } from 'vite';
/** @type {import('vite').UserConfig} */
export default ({ mode }) => {
// Extends 'process.env.*' with VITE_*-variables from '.env.(mode=production|development)'
process.env = {...process.env, ...loadEnv(mode, process.cwd())};
return defineConfig({
plugins: [sveltekit()]
});
};
Run Code Online (Sandbox Code Playgroud)
小智 108
如果你想访问你的环境变量 TEST_VAR 你应该在它前面加上前缀VITE_
尝试类似的东西
VITE_TEST_VAR=123f
Run Code Online (Sandbox Code Playgroud)
你可以通过以下方式访问它
import.meta.env.VITE_TEST_VAR
Run Code Online (Sandbox Code Playgroud)
Jam*_*ruk 61
以下是让我陷入困境的三个错误/陷阱。
src目录中。文件名.env和/或.env.development将在本地运行时起作用。npm run devVITE_(正如 Mahmoud 和 Wonkledge 已经提到的)Dmi*_*tin 17
对我有用的另一个解决方案是手动dotenv.config()调用vite.config.js. 这会将变量.env(全部!)加载到process.env:
import { defineConfig } from 'vite'
import dotenv from 'dotenv'
dotenv.config() // load env vars from .env
export default defineConfig({
define: {
__VALUE__: `"${process.env.VALUE}"` // wrapping in "" since it's a string
},
//....
}
Run Code Online (Sandbox Code Playgroud)
其中.env文件可能是:
VALUE='My env var value'
Run Code Online (Sandbox Code Playgroud)
请参阅演示。
| 归档时间: |
|
| 查看次数: |
227167 次 |
| 最近记录: |