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

Node.js项目从外层目录启动时无法读取.env文件配置值是什么原因

核心原因

dotenv包的默认查找逻辑是:调用config()方法时如果不手动指定.env文件路径,会从**Node进程的当前工作目录(CWD,即你启动服务时所在的执行目录)**查找.env文件,不会自动识别当前JS脚本所在的目录。

对应你的场景:

  • 你在VS Code中打开Backend目录时,启动后端服务的工作目录就是.env所在的Backend目录,dotenv能正常读取到文件内容,给process.env注入对应变量
  • 你在VS Code中打开iNotebook根目录时,启动后端服务的工作目录变成了iNotebook根目录,dotenv会在根目录下找.env,但你的.env存在子目录里,读取失败,自然JWT_SECRET就是undefined

修复方案

最简单的方法是给dotenv指定绝对路径,用Node内置的__dirname变量定位当前config.js所在的目录,不管你从哪个目录启动服务都能精准找到.env,修改config.js代码如下:

require('dotenv').config({ path: `${__dirname}/.env` });

module.exports = {JWT_SECRET:process.env.JWT_SECRET};

也可以在启动服务时先切换工作目录到Backend再执行启动命令,比如根目录下执行:
cd Backend && node 你的启动入口文件.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:54:06