Docker构建Node.js Express项目找不到自定义JavaScript模块问题求助
问题原因排查
核心原因:大小写匹配错误
你当前的报错是要求加载./AgoraApi模块,但实际项目目录中对应的文件名为小写开头的agoraApi.js:
- 本地开发如果使用Windows、macOS系统,默认文件系统大小写不敏感,就算引用和文件名大小写不一致也能正常加载
- Docker容器运行在Ubuntu(Linux)系统,文件系统严格区分大小写,就会将
AgoraApi和agoraApi识别为两个不同的文件,直接抛出模块找不到的错误。
该问题大概率是近期调整过文件名或者模块引用的大小写,本地测试时因为系统特性未发现异常,部署到Linux环境就触发了报错。
次要排查点:文件是否正确复制进镜像
你可以通过以下命令验证构建后的镜像是否包含目标文件,排除.dockerignore或COPY规则误屏蔽文件的问题:
docker run --rm <你的镜像名称> ls /usr/src/app/src/audioChat
如果输出中没有agoraApi.js,可以调整.dockerignore规则:当前你配置的!src、!util规则理论上会放行src和util目录的文件,如果有其他需要用到的目录也可以对应添加!目录名规则。
解决方法
- 统一引用和文件名的大小写:要么将代码中
require('./AgoraApi')的写法改为和文件名一致的require('./agoraApi'),要么将agoraApi.js文件名改为大写开头的AgoraApi.js,确保两者完全匹配 - 调整后重新构建镜像即可正常启动。
内容的提问来源于stack exchange,提问作者Kim Jihyun
相关产品推荐
相关产品推荐

