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

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
云风的 BLOG
云风的 BLOG
美团技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
爱范儿
爱范儿
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
GbyAI
GbyAI
雷峰网
雷峰网
P
Proofpoint News Feed
IT之家
IT之家
人人都是产品经理
人人都是产品经理
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
T
The Blog of Author Tim Ferriss
月光博客
月光博客
V
Visual Studio Blog
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
T
Troy Hunt's Blog
Project Zero
Project Zero
U
Unit 42
T
Tor Project blog
Scott Helme
Scott Helme
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
I
InfoQ
Cloudbric
Cloudbric
P
Proofpoint News Feed
The Cloudflare Blog
H
Heimdal Security Blog
Google DeepMind News
Google DeepMind News
The GitHub Blog
The GitHub Blog
Attack and Defense Labs
Attack and Defense Labs
有赞技术团队
有赞技术团队
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
博客园 - 【当耐特】
Security Latest
Security Latest
The Register - Security
The Register - Security
F
Fortinet All Blogs
I
Intezer
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
NISL@THU
NISL@THU
T
Tenable 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