统一导入模块时出现TypeError: Cannot read properties of undefined(reading 'main')
问题原因分析
1. "Cannot read properties of undefined (reading 'main')" 错误原因
你的imports.ts存在两个致命问题,导致模块无法正常导出:
- 未导入
MongoConnect就直接调用MongoConnect(),会触发ReferenceError: MongoConnect is not defined错误,中断模块加载流程; - 定义
_imports对象时,db属性的末尾缺少闭合的},存在语法错误。
这两个问题会导致Node.js无法正确解析imports.ts,最终导出的是undefined。当another_file.ts导入该模块后,尝试访问undefined.main就会触发你看到的错误。
至于app.ts中看似正常,大概率是你测试app.ts时,imports.ts还没有引入MongoConnect相关代码,或者手动修复过语法错误,后续修改imports.ts时引入了问题但未重新测试app.ts。
2. process.env.SECRET 为 undefined 的原因
这个问题是模块加载失败的连锁反应:dotenv.config()是在imports.ts的_imports.main对象中执行的,但由于上述的语法/引用错误,imports.ts的代码执行被中断,dotenv.config()根本没机会完成执行,自然无法将.env文件中的环境变量注入到process.env中。
另外补充一种可能:如果你的项目运行时工作目录不是项目根目录(比如某些IDE的运行配置错误),dotenv.config()会找不到根目录下的.env文件,但结合app.ts能正常读取的情况,这种可能性较低,核心原因还是模块加载失败导致dotenv未执行。
内容的提问来源于stack exchange,提问作者emirongrr
相关产品推荐
相关产品推荐

