当前位置: 首页 > news >正文

nextjs配置端口以及不同的环境变量

一、安装cross-env

1、解决方案一

直接设置公开变量:

{ "dev": "cross-env NEXT_PUBLIC_APP_ENV=development next dev -p 4400", "dev:test": "cross-env NEXT_PUBLIC_APP_ENV=test next dev -p 4400", "build:prod": "cross-env NEXT_PUBLIC_APP_ENV=production next build" }

然后:

process.env.NEXT_PUBLIC_APP_ENV

就会得到:

development test production

2、解决方案二(推荐)

脚本:

{ "dev": "cross-env APP_ENV=development next dev", "dev:test": "cross-env APP_ENV=test next dev", "build:prod": "cross-env APP_ENV=production next build" }

然后在next.config.ts

import type { NextConfig } from 'next'; const APP_ENV = process.env.APP_ENV ?? 'development'; console.log('APP_ENV=', APP_ENV); const nextConfig: NextConfig = { env: { NEXT_PUBLIC_APP_ENV: APP_ENV, }, }; export default nextConfig;

重启开发服务器。

此时:

pnpm dev:test

控制台:

APP_ENV=test

浏览器:

process.env.NEXT_PUBLIC_APP_ENV

test

3、如果仍然显示 development

检查.env.development是否有:

NEXT_PUBLIC_APP_ENV=development

因为next.config.tsenv配置和.env文件可能会同时存在。

最简单的做法是:

删除所有.env*文件里的NEXT_PUBLIC_APP_ENV

只保留:

NEXT_PUBLIC_API_URL=...

然后统一由:

// next.config.ts env: { NEXT_PUBLIC_APP_ENV: APP_ENV, }

生成。

这样不会出现:

.env.development => development cross-env => test

两个来源打架的问题。

二、根据APP_ENV注入对应的 API 地址

const config = { development: { apiUrl: 'https://dev-api.example.com', }, test: { apiUrl: 'https://test-api.example.com', }, production: { apiUrl: 'https://api.example.com', }, }; const APP_ENV = process.env.APP_ENV ?? 'development'; export default { env: { NEXT_PUBLIC_APP_ENV: APP_ENV, NEXT_PUBLIC_API_URL: config[APP_ENV].apiUrl, }, };

这样:

process.env.NEXT_PUBLIC_API_URL

才会随着:

pnpm dev pnpm dev:test pnpm build:prod

自动切换。

对于 Next.js 项目,我通常会把所有环境配置集中到src/config/env.ts,并通过APP_ENV → next.config.ts → NEXT_PUBLIC_*这一层映射来管理,而不是在多个.env文件里维护同一套前端配置。这样类型更安全,也更容易排查问题。

三、配置端口以及开发启动打开默认浏览器

先安装:

pnpm add -D concurrently wait-on open-cli

然后修改package.json

{ "scripts": { "dev": "concurrently \"next dev -p 4400\" \"wait-on http://localhost:4400 && open-cli http://localhost:4400\"", "dev:test": "concurrently \"cross-env APP_ENV=test next dev -p 4400\" \"wait-on http://localhost:4400 && open-cli http://localhost:4400\"" } }

启动:

pnpm dev

或者:

pnpm dev:test

服务启动完成后会自动打开默认浏览器访问:

http://localhost:4400

为了避免端口写两遍,推荐抽成变量:

{ "scripts": { "dev": "cross-env PORT=4400 concurrently \"next dev -p %PORT%\" \"wait-on http://localhost:%PORT% && open-cli http://localhost:%PORT%\"" } }

但这在 Windows 和 macOS/Linux 上变量写法不同,所以实际项目里很多人直接写死:

{ "scripts": { "dev": "concurrently \"next dev -p 4400\" \"wait-on http://localhost:4400 && open-cli http://localhost:4400\"" } }

最简单也最稳定。

如果你已经有开发、测试、生产环境脚本,我推荐这样整理:

{ "scripts": { "dev": "concurrently \"next dev -p 4400\" \"wait-on tcp:127.0.0.1:4400 && open-cli http://localhost:4400\"", "dev:test": "concurrently \"cross-env APP_ENV=test next dev -p 4400\" \"wait-on tcp:127.0.0.1:4400 && open-cli http://localhost:4400\"", "build:test": "cross-env APP_ENV=test next build", "build:prod": "cross-env APP_ENV=production next build", "start:test": "cross-env APP_ENV=test next start -p 4400", "start:prod": "cross-env APP_ENV=production next start -p 4400" } }

这样执行pnpm devpnpm dev:test时都会自动打开浏览器。

http://www.cnnetsun.cn/news/2750757.html

相关文章:

  • Arduino LED盾牌模型制作:从电路原理到游戏周边实作
  • 电路设计入门:从欧姆定律到PCB实战,手把手教你制作可调稳压电源
  • 终极Obsidian主题美化方案:AnuPpuccin让你的笔记创作效率翻倍
  • 废旧香水瓶改造可编程RGB LED氛围灯:从电路原理到手工制作全解析
  • 2026年服装ERP怎么处理多品牌、多品类、海量SKU的商品管理和库存周转?
  • QrazyBox:5分钟学会修复损坏的二维码,让模糊信息重见天日
  • TikTok广告账户太多怎么管理?跨境团队多账户投放系统搭建方案
  • Arduino 10秒倒计时器:从电路设计到代码实现的完整DIY指南
  • 终极Windows 11系统清理指南:Win11Debloat帮你一键移除臃肿应用和隐私跟踪
  • 新手福音:在快马平台借助Codex重连机制,无忧开启你的第一行代码
  • Python入门:Python代码注释的三种写法详解
  • 深度探索Android内核扩展:构建安全高效的系统hook模块
  • VisualCppRedist AIO:终极Windows运行库修复解决方案
  • 如何高效下载抖音视频:douyin-downloader完整指南与实战技巧
  • 2026降AI率工具红黑榜:降AI率网站怎么选?别再瞎找了!
  • 如何用OpenMir2快速搭建热血传奇游戏服务器:C完整实战指南
  • 高校心理教育辅导设计与实现 | 毕业设计完整源码
  • 基于LPJ模型的植被NPP模拟、驱动力分析及其气候变化响应预测
  • date-fns:200+ 函数的 JavaScript 日期工具库
  • 2026 电商爆单密码:怎么用 AI 生成带货视频?高性价比工具深度盘点
  • 高灵敏+高特异 | 多疾病领域小分子ELISA试剂盒优选方案
  • GPT-5.4 Pro静默升级深度解析:推理加速与多模态优化实战指南
  • 番茄小说下载器:打造个人专属离线图书馆的终极指南 [特殊字符]
  • 从安装到调参:一份超详细的imbalanced-learn避坑指南(含版本依赖与常见报错解决)
  • ORB-SLAM Atlas里的‘相机位姿可观测性’到底在防什么坑?一个公式讲清多地图的精度秘密
  • MATLAB最小费用最大流求解工具包:含Ford-Bellman增广路径实现
  • 2026年3月三级T2:上升三元组
  • 5k Star的直播自动录制工具biliup,支持20+平台持续录像上传
  • (ASP + Access)网页版文档文件(证照、档案、合同等)管理系统
  • 如何用Python构建同花顺自动化交易系统:jqktrader技术深度解析