You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10下React项目用dotenv时如何配置package.json的npm start脚本?

Windows 10 下运行Mac开发的React项目脚本问题解决

一、Win10环境下的正确脚本写法

方案1:适配Windows CMD的原生写法

将scripts修改为:

"scripts": {
  "start": "set PORT=XXXX && dotenv -e .env.local && react-app-rewired start"
}

关键修正:在set PORT=XXXX后添加&&,与后续的dotenv命令分隔。Windows CMD中,set命令设置环境变量后必须明确用&&开启下一个命令,否则会把后续命令当作set的参数处理,导致dotenv无法正确加载.env.local,进而引发路径未定义的错误。

方案2:跨平台兼容写法(同时支持Mac/Win)

如果需要一套脚本兼容两个系统,先安装跨环境依赖:

npm install cross-env cross-env-shell --save-dev

然后修改scripts:

"scripts": {
  "start": "cross-env-shell PORT=XXXX dotenv -e .env.local react-app-rewired start"
}

cross-env-shell会自动适配不同系统的环境变量设置语法,无需区分Win和Mac的命令差异。

二、Win与Mac脚本的核心差异

  • 环境变量设置语法:Windows CMD用set VAR=值,Mac/Linux的Shell用VAR=值;且Mac中VAR=值 command是将变量仅作用于后续单个命令,而Windows中set设置的变量会作用于整个会话,必须用&&分隔命令。
  • 命令分隔逻辑:Windows CMD中,set命令后直接跟其他命令会被识别为变量值的一部分,必须用&&明确分隔;Mac Shell则允许VAR=值 command的连续写法,无需额外分隔符。
  • 执行环境差异:Mac默认用Bash/Zsh,Windows默认用CMD/PowerShell,不同Shell的语法规则不同(比如PowerShell设置环境变量是$env:VAR=值,和CMD又有区别)。

为什么移除&&后能执行但网站无法显示?

移除&&后,命令变为set PORT=XXXX dotenv -e .env.local react-app-rewired start,Windows CMD会将XXXX dotenv -e .env.local react-app-rewired start全部当作PORT变量的值,导致dotenv和react-app-rewired根本没有被执行,自然无法启动React项目,网站也就无法显示。

内容的提问来源于stack exchange,提问作者qqman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:52:56