Blitz 尚在 beat 阶段! 🎉 预计会在今年的 Q3 季度发布 1.0
Back to Documentation Menu

环境变量

Topics

Jump to a Topic

Blitz 内置了对环境变量的支持,你可以执行以下操作:

加载环境变量

Blitz 内置支持将环境变量从 .env.local 加载到 process.env 中。

一个 .env.local 文件的示例:

DB_HOST=localhost
DB_USER=myuser
DB_PASS=mypassword

这样会将 process.env.DB_HOSTprocess.env.DB_USERprocess.env.DB_PASS 自动加载到 Node.js 环境中,从而允许你在服务器上使用 它们。

注意: Blitz 会自动在你的 .env* 文件中扩展变量。这使你可以引用其它 私密内容,比如:

# .env
HOSTNAME=localhost
PORT=8080
HOST=http://$HOSTNAME:$PORT

如果你尝试在值中使用带有 $ 的变量,则需要这样进行转义:\$

例如:

# .env
A=abc
WRONG=pre$A # becomes "preabc"
CORRECT=pre\$A # becomes "pre$A"

向浏览器暴露环境变量

默认情况下,通过 .env 文件夹加载的所有环境变量仅在 Node.js 环境中可用, 这意味着它们不会向浏览器公开。

你可以通过这两种方式将变量公开给浏览器。

选择 1:NEXT_PUBLIC_ 前缀

给变量加上前缀 NEXT_PUBLIC_。例如:

NEXT_PUBLIC_ANALYTICS_ID=abcdefghijk

由于前缀 NEXT_PUBLIC_,该值会被内联到发送给浏览器的 JavaScript 中。

// pages/index.js
import setupAnalyticsService from "../lib/my-analytics-service"

// NEXT_PUBLIC_ANALYTICS_ID can be used here as it's prefixed by NEXT_PUBLIC_
setupAnalyticsService(process.env.NEXT_PUBLIC_ANALYTICS_ID)

function HomePage() {
  return <h1>Hello World</h1>
}

export default HomePage

选择 2:blitz.config.js 中的 env

Blitz 配置中 env 中定义的任何键都将内联到发送给浏览器的 JavaScript 中。

// blitz.config.js
module.exports = {
  // Env vars defined here will be PUBLIC and included in the client JS bundle
  env: {
    STRIPE_KEY: process.env.STRIPE_KEY,
    SENTRY_DSN: process.env.SENTRY_DSN,
  },
}

每个环境的不同值

通常,只需要一个 .env.local 文件。但是,又是你可能想为 developmentproduction 环境添加一些默认值。

Blitz 允许你在 .env(所有环境)、.env.development (开发 environment)、.env.production(生产环境)和.env.test (测试 environment) 中设置默认值。这些具有默认值的文件应该被 Git 跟踪。`

附加上 .local 结尾的将会覆盖默认值。例如 .env.local.env.test.local。这些文件不应该被 git 跟踪。


Idea for improving this page? Edit it on GitHub.