惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
B
Blog
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
A
About on SuperTechFans
H
Heimdal Security Blog
AI
AI
F
Full Disclosure
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
量子位
I
InfoQ
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
N
News and Events Feed by Topic
腾讯CDC
L
LINUX DO - 最新话题
Attack and Defense Labs
Attack and Defense Labs
Hacker News: Ask HN
Hacker News: Ask HN
Google Online Security Blog
Google Online Security Blog
博客园_首页
Forbes - Security
Forbes - Security
The Register - Security
The Register - Security
博客园 - 三生石上(FineUI控件)
PCI Perspectives
PCI Perspectives
V
Vulnerabilities – Threatpost
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
LangChain Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
NISL@THU
NISL@THU
博客园 - Franky
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
H
Hacker News: Front Page
Project Zero
Project Zero
P
Privacy International News Feed
Cyberwarzone
Cyberwarzone
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
大猫的无限游戏
大猫的无限游戏
Application and Cybersecurity Blog
Application and Cybersecurity Blog

十月指南

使用AI开发一个应用最好的时间是现在 Kimi K2 发布并开源,实测效果确实很强! Vibe Coding实战:从翻车到上线,我开发了一款提前还贷计算器小程序 告别熬夜写代码!AI编程让我用Vibe Coding轻松上线 10 + 工具 用Vibe Coding方式打造 AI 内容创作平台 我连代码都没写,却做出JSON格式化工具—Vibe Coding了解一下 GPT 4.1、DeepSeek R1、Claude 3.7 代码生成横评,谁才是设计稿还原之王? AI 时代程序员生存指南 Cursor+Figma MCP 设计稿还原如此简单 MCP(模型上下文协议)是什么?它如何简化与API的AI集成 号外!我用Trae+Claude3.7开发的小程序上线啦 30分钟开发完成!Trae+Claude 3.7 打造小程序全流程揭秘! 5 分钟打造超酷小程序设计稿,Trae+Claude 3.7 太神了! 一句话生成设计稿,Trae+Claude 3.7 Sonnet,设计师也要被AI取代了 一句话生成应用!程序员效率翻倍的AI代码生成工具大盘点 我用AI创作了一首歌:Suno、海绵音乐、天工AI音乐生成效果测评 从哪吒2热潮到AI短片创作:AI视频实战测评 shadcn_ui:2024年最受欢迎的前端项目 实战:基于 Next.js+MoonShot API 开发一个 Github Trending 总结助手 技术篇:构建与部署 技术篇:Google 统计服务 技术篇:数据库-Prisma 技术篇:身份验证-NextAuth 技术篇:CSR、SSR、SSG、ISR 与客户端、服务端组件 技术篇:Next.js 路由与页面管理 技术篇:Next.js 项目结构 技术篇:Next.js 简介与概览 技术篇:从零开始掌握 Tailwind CSS 设计篇:独立开发设计入门 开篇:走上独立开发之路 Ollama:本地大模型运行指南 TooTool.net 理解 CSS 中的 Containing Block(包含块) 独立开发者工具大全(持续更新) TimeFlow 如何快速拥有一个技术博客 一个人从零开发上线一款App需要多少钱?终于有答案了! 深入理解HTTPS Nginx实战 Flutter Platform Channel 使用与源码分析 Android SDK类产品开发总结 360插件化框架 RePlugin 之 ClassLoader Hook Mac下Charles抓包配置 十一大西北体验 利用ContentProvider实现同步Binder macOS修改Android模拟器Hosts 走过 登山记 期待成长 小雨 静夜思 关于
技术篇:Next.js 多环境配置
十月 · 2024-11-15 · via 十月指南

学习目标:配置本地和线上环境

多环境配置是指为应用的不同运行环境(如开发、测试和生产)设置不同的参数和配置。通常来说,你可能会在开发环境使用本地服务和数据库,而在生产环境连接到远程服务和实际的数据库。这些差异通过环境变量管理,使得应用能够根据运行环境加载相应的配置。

Next.js 13 使用 .env 文件来管理环境变量。环境变量是多环境配置的核心,通过定义这些变量,开发者可以轻松地在不同环境中切换配置。

使用 .env 文件 #

Next.js 默认支持 .env 文件,这些文件位于项目的根目录中,用于存储环境变量。Next.js 会根据运行环境自动加载相应的文件。

  • .env:默认环境配置,适用于所有环境。
  • .env.local:本地开发环境的配置,不会被 Git 提交。
  • .env.development:开发环境 (next dev)的配置。
  • .env.production:生产环境(next buildnext start)的配置。

除了上面的环境还有一个测试环境,通常用于自动化测试场景,如使用 Jest、Cypress 或其他测试工具进行单元测试、集成测试或端到端测试。测试环境可以通过设置 NODE_ENVtest 来激活。

示例 .env 文件:

# .env
DATABASE_URL=mysql://root:123456@your_domain:3306/dram

示例 .env.local 文件:

DATABASE_URL=mysql://root:123456@localhost:3306/dram

加载优先级 #

Next.js 13 根据文件名的优先级加载环境变量:

  1. .env.local
  2. .env.[environment]
  3. .env

例如,在开发环境下,.env.local 中的配置会覆盖 .env.development.env 中的设置。如果.env.local没有对应的变量,才会加载.env.development.env 中的设置

使用环境变量 #

在 Next.js 中,你可以通过 process.env 访问环境变量。例如:

export async function GET(request) {
  const user = { id: 1, name: "张三" };
  console.log(process.env.DATABASE_URL);
  console.log(process.env.NODE_ENV);
  return new Response(JSON.stringify(user));
}

环境变量的命名约定 #

为了确保环境变量的安全和正确使用,Next.js 规定了环境变量的命名约定:

  • 公共环境变量:使用 NEXT_PUBLIC_ 前缀的环境变量会被暴露给客户端。因此,所有需要在浏览器中访问的变量都应以 NEXT_PUBLIC_ 开头。

示例:

NEXT_PUBLIC_API_URL=https://api.example.com
  • 私有环境变量:未使用 NEXT_PUBLIC_ 前缀的环境变量仅在服务器端可用,用于存储如数据库连接字符串或 API 密钥等敏感信息。

示例:

DATABASE_URL=mysql://root:123456@localhost:3306/dram

在 Vercel 上配置多环境变量 #

Vercel 是 Next.js 官方推荐的托管平台,支持简便的环境变量管理。以下是如何在 Vercel 上配置多环境的步骤:

在 Vercel 控制台中设置环境变量 #

  1. 登录 Vercel 控制台,选择你的项目。
  2. 进入项目设置页面,找到 Environment Variables 选项。
  3. 在不同环境(Production、Preview、Development)下分别添加环境变量。

使用 Vercel 环境变量 #

在 Vercel 上设置的环境变量将自动应用于部署环境,你无需在代码中进行任何更改。Vercel 会在构建和运行时自动加载这些变量。

image.png

总结 #

Next.js 13 提供了一套强大且灵活的多环境配置管理工具,通过使用环境变量,开发者可以轻松地管理和切换不同环境下的配置。我们应避免在代码中硬编码环境相关的设置,使用环境变量管理不同环境的配置。同时确保公共和私有环境变量的分离,避免不必要的敏感信息暴露给客户端。始终使用 NEXT_PUBLIC_ 前缀来标识需要暴露的环境变量。无论是本地开发还是在 Vercel 等平台上进行部署,合理的多环境配置将大大提升应用的开发和维护效率。

参考 #

https://nextjs.org/docs/app/building-your-application/configuring/environment-variables