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

Node.js CLI应用如何在package.json的bin中加载.env文件?

解决Node.js CLI原生--env-file在package.json bin字段不生效的问题

问题出在你package.json的bin字段写法上——bin字段中的命令必须明确调用node执行脚本,你之前的写法缺少了node前缀,系统无法识别该用什么程序来处理后面的参数和文件路径。

正确配置步骤

1. 修正package.json的bin字段

将bin字段的命令改为包含node的完整指令,同时确保脚本路径是相对项目根目录的正确路径:

{
  "name": "myapp",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "type": "module",
  "bin": {
    "mycli": "node --env-file=config.env ./apps/app.js"
  },
  "keywords": []
}

注意:如果config.env不在项目根目录,需要调整--env-file后的路径(比如./config/config.env);./apps/app.js是相对package.json的脚本路径,避免使用绝对路径导致跨环境问题。

2. 重新链接本地CLI命令

修改配置后,需要重新执行本地包链接命令,让系统更新mycli命令的关联:

npm link

(如果用yarn则执行yarn link)

3. 验证.env加载效果

在你的app.js中添加测试代码,确认环境变量是否正确加载:

// app.js
console.log("测试环境变量:", process.env.YOUR_KEY_NAME);

运行mycli命令,如果能打印出config.env中对应键的值,说明配置生效。

额外注意事项

  • 确保你的config.env是标准格式:每行一个键值对,比如API_KEY=abc123,不要给值加不必要的引号(除非值本身包含空格或特殊字符)。
  • Node 20.6.0+原生支持--env-file,但仅在调用node命令时生效,无法直接通过脚本文件头(比如#!/usr/bin/env node)传递该参数,所以必须在bin字段中明确写全node --env-file=...指令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:23:25