Node.js/ESM项目AWS Serverless架构下找不到passport-config模块
解决Node.js ESM项目中无法找到'passport-config'模块的问题
错误核心分析
从错误栈能直接定位两个关键问题:
- 路径不匹配:报错显示
userRoutes.js(实际你的文件是userRoutes.mjs)尝试从helpers/passport-config导入,但你代码里写的是./passport-config——userRoutes在routes目录,passport-config在helpers目录,二者属于同级父目录下的子文件夹,需要向上跳转一级再进入helpers目录。 - ESM扩展名问题:你用的是
.mjs后缀的ESM文件,但导入时未指定完整扩展名,Node.js在ESM模式下默认不会自动补全扩展名(除非在package.json中配置了"type": "module")。
具体修复步骤
1. 修正导入路径与扩展名
修改userRoutes.mjs中的导入语句:
// 原错误导入 import passport from './passport-config'; // 修正后(匹配实际文件结构) import passport from '../helpers/passport-config.mjs';
如果项目根目录的package.json已添加"type": "module"(此时所有.js文件会被识别为ESM),可以省略扩展名:
import passport from '../helpers/passport-config';
2. 配置package.json的模块类型
在项目根目录的package.json中添加或确认以下配置:
{ "type": "module" }
该配置能让Node.js将所有.js文件当作ESM模块处理,避免.mjs与.js的后缀混淆问题。
3. 验证文件命名与位置
- 确认
passport-config.mjs确实在RFREARN_BACKEND/helpers/目录下 - 检查文件名大小写(Windows不区分大小写,但AWS Linux环境区分,提前规避问题)
4. 清理缓存并测试
- 清理Node.js模块缓存:
node --clear-module-cache - 重新启动Serverless服务验证修复效果
AWS Serverless环境额外注意事项
- 检查
serverless.yml的package配置,确保helpers和routes目录都被包含在部署包内 - 避免使用模糊的相对路径写法,所有导入路径保持明确的相对层级
内容的提问来源于stack exchange,提问作者Vikas Kuntal
相关产品推荐
相关产品推荐

