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

将.env文件加载到pm2配置时遭遇模块找不到错误求助

问题描述

我已经参照网上所有示例操作,却无法让pm2配置正确加载Node服务器,持续收到错误:Error: Cannot find module 'dotenv/config'。

我的.env文件与Node服务器不在同一目录,已按官方文档创建ecosystem.config.js文件,内容如下:

module.exports = {
  apps : [{
    name        : "node-server-prod",
    script      : "/my/absolute/path/server.js",
    cwd         : "/my/absolute/path",
    node_args   : "-r dotenv/config",
    args        : "dotenv_config_path=relative/to/cwd/.env"
  }]
}

我在args和script路径都尝试过绝对与相对路径,确认dotenv已安装在Node服务器目录,但未安装在执行pm2 start ecosystem.config.js的目录。

更新: 附上完整堆栈追踪:
错误堆栈追踪

解决方案
  • 指定NODE_PATH指向服务目录的node_modules:在ecosystem.config.js中添加env配置,让Node能找到服务目录下的dotenv模块,同时建议把.env路径改成绝对路径避免歧义:
    module.exports = {
      apps : [{
        name        : "node-server-prod",
        script      : "/my/absolute/path/server.js",
        cwd         : "/my/absolute/path",
        node_args   : "-r dotenv/config",
        args        : "dotenv_config_path=/绝对路径/到你的/.env文件",
        env: {
          NODE_PATH: "/my/absolute/path/node_modules"
        }
      }]
    }
    
  • 直接在服务代码中加载dotenv:去掉pm2配置里的node_args和args,在server.js开头手动加载dotenv并指定.env路径:
    // server.js 文件顶部添加
    require('dotenv').config({ path: '/绝对路径/到你的/.env文件' });
    
    修改后的ecosystem.config.js:
    module.exports = {
      apps : [{
        name        : "node-server-prod",
        script      : "/my/absolute/path/server.js",
        cwd         : "/my/absolute/path"
      }]
    }
    
  • 在pm2执行目录安装dotenv:如果不想修改配置,也可以在运行pm2 start命令的目录执行npm install dotenv,不过这种方法会产生冗余依赖,不推荐作为首选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:41:21