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

运行Node.js命令行工具时如何加载.env环境变量?

解决命令行工具无法加载.env变量的问题

核心原因

用npm start启动时,脚本里的env-cmd会自动加载.env文件并注入环境变量;但全局安装后直接运行命令行工具时,没有经过env-cmd的处理,也没主动加载dotenv,导致process.env.TOKEN返回undefined。

解决方案

方案1:手动在代码中加载dotenv

在src/index.ts的最顶部添加以下代码,确保程序启动时优先加载.env文件:

import dotenv from 'dotenv';
// 加载项目根目录下的.env文件
dotenv.config();

这样不管是全局运行、ts-node启动还是服务器模式,都会自动读取.env里的变量。

方案2:优化全局执行的脚本配置

你的package.json中bin指向的是TS文件,全局安装后需要确保用ts-node来执行它:

  1. 在src/index.ts最顶部添加shebang声明:
    #!/usr/bin/env ts-node
    
  2. 给TS文件添加可执行权限(Linux/macOS下):
    chmod +x src/index.ts
    
    之后重新全局安装:npm install -g .

方案3:编译为JS后再全局安装

避免依赖全局的ts-node,先编译成JS文件再安装:

  1. 确保tsconfig.json中配置了outDir: "./dist"(指定编译输出目录)
  2. 修改package.json的bin字段:
    "bin": "./dist/index.js"
    
  3. 执行编译:npm run build
  4. 重新全局安装:npm install -g .

验证

修改完成后,全局运行你的命令行工具,检查process.env.TOKEN是否能正常获取到值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:35:18