# .env# you can write with line breaksPRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----...Kh9NV......-----END DSA PRIVATE KEY-----"# or with `\n` inside double quotesPRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END DSA PRIVATE KEY-----\n"
import setupAnalyticsService from '../lib/my-analytics-service'// 'NEXT_PUBLIC_ANALYTICS_ID' can be used here as it's prefixed by 'NEXT_PUBLIC_'.// It will be transformed at build time to `setupAnalyticsService('abcdefghijk')`.setupAnalyticsService(process.env.NEXT_PUBLIC_ANALYTICS_ID)function HomePage() { return <h1>Hello World</h1>}export default HomePage
注意,动态查找将_不会_被内联,例如:
// This will NOT be inlined, because it uses a variableconst varName = 'NEXT_PUBLIC_ANALYTICS_ID'setupAnalyticsService(process.env[varName])// This will NOT be inlined, because it uses a variableconst env = process.envsetupAnalyticsService(env.NEXT_PUBLIC_ANALYTICS_ID)
默认情况下,环境变量只在服务器上可用。要将环境变量暴露给浏览器,必须添加 NEXT_PUBLIC_ 前缀。然而,这些公共环境变量将在 next build 期间内联到 JavaScript 包中。
你可以在动态渲染期间安全地在服务器上读取环境变量:
app/page.ts
TypeScript
import { connection } from 'next/server'export default async function Component() { await connection() // cookies, headers, and other Dynamic APIs // will also opt into dynamic rendering, meaning // this env variable is evaluated at runtime const value = process.env.MY_VALUE // ...}
// The below can be used in a Jest global setup file or similar for your testing set-upimport { loadEnvConfig } from '@next/env'export default async () => { const projectDir = process.cwd() loadEnvConfig(projectDir)}