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

Node.js/ESM项目AWS Serverless架构下找不到passport-config模块

解决Node.js ESM项目中无法找到'passport-config'模块的问题

错误核心分析

从错误栈能直接定位两个关键问题:

  1. 路径不匹配:报错显示userRoutes.js(实际你的文件是userRoutes.mjs)尝试从helpers/passport-config导入,但你代码里写的是./passport-config——userRoutes在routes目录,passport-config在helpers目录,二者属于同级父目录下的子文件夹,需要向上跳转一级再进入helpers目录。
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:30:10