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

Ubuntu环境Docker部署Node.js站点找不到UserRepository模块如何解决

问题根因

该Cannot find module报错为Node.js运行时无法匹配到代码中引用的相对路径模块,和npm依赖、系统基础包无关,因此执行npm install、apt-get update无法解决问题。本地运行正常、Docker容器内报错的核心原因是两类环境的文件系统规则、文件加载逻辑存在差异。

排查与解决步骤

  • 大小写不匹配问题
    Windows、macOS默认采用大小写不敏感的文件系统,Ubuntu及Docker内的Linux环境均为大小写敏感。请核对../repositories/目录下的实际文件名,是否与代码中引用的UserRepository大小写完全一致,比如实际文件名为userRepository.js、Userrepository.js都会导致容器内加载失败,将代码中的引用路径修改为和实际文件名完全匹配即可。
  • Docker文件遗漏问题
    先检查项目根目录下的.dockerignore配置,确认未将repositories/目录或.js后缀的源码文件纳入忽略规则;再检查Dockerfile中的COPY指令,确认除package.json外,已将全部项目源码复制到镜像的对应工作目录下。如果是使用挂载卷启动容器,需确认本地挂载路径和容器内目标路径对应正确,未出现挂载错位导致/app/usr/src/repositories/目录在容器内不存在的情况。
  • 路径定位校验
    可在user.services.js文件顶部添加临时调试代码,确认路径下的文件列表:
    const fs = require('fs')
    const path = require('path')
    console.log('当前文件目录', __dirname)
    console.log('目标目录文件列表', fs.readdirSync(path.join(__dirname, '../repositories')))
    
    重新构建镜像启动后查看容器日志,即可明确目标路径下是否存在对应文件。

原始报错日志

internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module '../repositories/UserRepository'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/app/usr/src/services/user.services.js:2:24)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
[nodemon] app crashed - waiting for file changes before starting.

内容的提问来源于stack exchange,提问作者Divya rani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:15:00