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

如何在本地将Node版本传入React环境变量?

解决Windows本地npm脚本中获取Node版本作为环境变量的问题

你遇到的报错本质是Windows命令行(cmd/PowerShell)不支持类Unix Shell(如Bash)的反引号命令替换语法——Jenkins用的是Bash,所以export REACT_APP_NODE_VERSION=node --version``能正常工作,但Windows会把node -v拆成单独的-v命令执行,导致抛出找不到命令的错误。

以下是几种可行的本地解决方案:

方案1:改用cross-env-shell替代cross-env

cross-env仅负责跨平台设置环境变量,不处理Shell语法;而cross-env-shell会调用系统默认Shell解析整个命令,支持命令替换。

修改package.json中的脚本:

"start:app": "cross-env-shell REACT_APP_APPENV=local REACT_APP_NODE_VERSION=`node -v` react-scripts start"

如果你的默认Shell是PowerShell,需要把反引号换成PowerShell的命令替换语法$():

"start:app": "cross-env-shell REACT_APP_APPENV=local REACT_APP_NODE_VERSION=$(node -v) react-scripts start"

方案2:用Node.js脚本前置处理环境变量

写一个简单的Node.js脚本,提前获取Node版本并设置环境变量,再启动项目:

  1. 在项目根目录创建set-env.js文件:
const { execSync, spawn } = require('child_process');

// 设置环境变量
process.env.REACT_APP_APPENV = 'local';
process.env.REACT_APP_NODE_VERSION = execSync('node -v').toString().trim();

// 启动React项目
spawn('react-scripts', ['start'], {
  stdio: 'inherit', // 继承控制台输入输出
  env: process.env
});
  1. 修改package.json的脚本:
"start:app": "node set-env.js"

方案3:Windows CMD专用语法(仅适用于CMD)

如果你的本地默认是CMD命令行,可以用CMD的for /f语法捕获命令输出:

"start:app": "for /f \"tokens=*\" %%v in ('node -v') do set REACT_APP_NODE_VERSION=%%v && cross-env REACT_APP_APPENV=local react-scripts start"

注:npm脚本中需要把CMD的单个%替换成%%才能正常解析。

内容的提问来源于stack exchange,提问作者Carlos Jaime C. De Leon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:07:14