AdonisJs部署Docker时单个PUT路由提示模块找不到求助
问题排查与解决
核心原因
Docker容器基于Linux系统,文件名大小写敏感,而你的本地开发环境(如Windows/macOS默认配置)允许大小写不匹配的文件访问,这就导致本地运行正常,但部署到Docker后出现模块找不到的问题。
对比你的路由代码就能发现问题:
- 所有正常路由使用的控制器名称是
PreGenerateCouponsController(注意Generate的首字母G为大写) - 报错的PUT路由使用的是
PregenerateCouponsController(generate的首字母g为小写)
两者拼写不一致,Linux环境下无法匹配到实际的控制器文件,因此抛出MODULE_NOT_FOUND错误。
解决方案
将PUT路由中的控制器名称修正为与其他路由一致的正确拼写:
Route.put( "/pre-gen/:retentionDate", "PreGenerateCouponsController.retention" // 修正此处的控制器名称大小写 ).middleware(["auth:svms"]);
验证步骤
- 修正代码后重新构建Docker镜像并部署
- 再次请求该PUT路由,确认错误消失
建议在本地开发环境开启文件名大小写敏感检查(比如macOS配置APFS卷为大小写敏感模式、Windows使用WSL2开发),避免这类跨环境问题提前暴露。
内容的提问来源于stack exchange,提问作者sattha14902
相关产品推荐
相关产品推荐

