Skip to content

环境变量

Deno 中的环境变量通常通过 Deno.env.get()process.env.* 调用来读取,或者如果使用了 --env-file 标志,则通过 .env 文件读取,参见Deno 中如何使用环境变量

在此基础上,Fresh 在构建 islands 时,会自动内联所有名称以 `FRESH_PUBLIC_ 开头的环境变量。

[info]: 这个内联步骤发生在构建应用时(deno task build)。Island 内部的环境变量无法在运行时读取。

示例:

sh
$ FRESH_PUBLIC_FOO=bar deno task dev
tsx
export function MyIsland() {
  const value = Deno.env.get("FRESH_PUBLIC_FOO");
  return <h1>{value}</h1>;
}

这段代码在打包后将变成:

tsx
export function MyIsland() {
  const value = "bar";
  return <h1>{value}</h1>;
}

这样你就可以在浏览器中使用特定的环境变量。

[warn]: 为了使内联生效,代码需要能被我们的插件分析。这意味着不是所有在 Deno 中读取环境变量的形式都支持,即使它是完全有效的 JavaScript 代码。

ts
// 正确
Deno.env.get("FRESH_PUBLIC_FOO");
process.env.FRESH_PUBLIC_FOO;

// 错误
const name = "FRESH_PUBLIC_FOO";
Deno.env.get(name);
process.env[name];

// 错误
const obj = Deno.env.toObject();
obj.FRESH_PUBLIC_FOO;