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

如何在NPM Scripts中使用.env文件里的环境变量?

跨系统在npm脚本中加载.env变量运行Apollo Rover的解决方案

你的问题核心是cross-env/cross-env-shell仅负责跨系统统一环境变量的设置逻辑,但不会自动读取.env文件中的变量,所以环境中不存在ACCESS_TOKEN,导致输出为空。以下是兼容类Unix和Windows系统的完整解决方案:

步骤1:安装必要依赖

需要同时使用dotenv(负责加载.env文件到环境变量)和cross-env(跨系统环境变量兼容):

npm install --save-dev dotenv cross-env

如果想简化脚本写法,也可以额外安装dotenv-cli(无需手动写Node加载逻辑):

npm install --save-dev dotenv-cli cross-env

步骤2:修正.env文件格式

移除变量值的引号,避免dotenv解析时将引号包含到变量值中:

ACCESS_TOKEN=jdaksc8ds7vp98vwy8

注意:务必将.env添加到.gitignore中,防止敏感信息提交到代码仓库。

步骤3:修改package.json脚本

根据选择的依赖方式,二选一配置:

方式一:使用dotenv + cross-env(无需额外安装dotenv-cli)

利用Node.js的-r参数预加载dotenv模块,直接读取.env变量:

{
  "scripts": {
    "test": "cross-env-shell \"node -r dotenv/config -e 'console.log(`Hello ${process.env.ACCESS_TOKEN}`)'\"",
    "rover:run": "cross-env-shell \"node -r dotenv/config rover <你的Rover命令>\""
  }
}

方式二:使用dotenv-cli + cross-env(脚本更简洁)

dotenv-cli会自动加载.env文件,再通过cross-env保证跨系统兼容:

{
  "scripts": {
    "test": "dotenv cross-env echo Hello $ACCESS_TOKEN",
    "rover:run": "dotenv cross-env rover <你的Rover命令>"
  }
}

验证效果

执行测试脚本:

npm run test

此时会输出:

Hello jdaksc8ds7vp98vwy8

说明.env变量已成功加载,后续运行Apollo Rover命令时,即可直接使用$ACCESS_TOKEN,cross-env会自动处理类Unix与Windows系统的语法差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:40:25