React+Webpack+TypeScript Docker构建仅src/api模块找不到问题排查
问题排查方向
1. 大小写与Git文件追踪问题
- Linux(Docker容器基于Linux)严格区分文件名大小写,但Windows/macOS默认不区分。检查代码中导入
src/api文件的语句大小写,是否与实际文件/目录的大小写完全一致,比如代码写import xx from './Api/user'但实际是api/user.ts,本地能运行但Docker环境会报错。 - 确认Git仓库中
src/api的文件大小写是否正确,本地修改文件名大小写后,Git可能未自动追踪变更,导致CI拉取的代码结构与本地不一致。
2. Docker文件复制与忽略规则检查
- 查看
.dockerignore文件,确认没有忽略src/api目录或其中的.ts/.tsx文件,避免COPY . .时漏掉该目录的文件。 - 在Docker构建步骤中添加临时命令(如
RUN ls -la src/api),查看容器内是否存在该目录及对应文件,验证文件是否被完整复制。
3. TypeScript配置的路径扫描差异
- 检查
tsconfig.json的include字段,是否明确包含src/api/**/*。如果include仅覆盖了components、types等目录,本地IDE或Webpack的额外处理可能识别到api文件,但CI构建时TS会严格按配置扫描,导致找不到模块。 - 在CI构建中执行
tsc --showConfig,对比本地和CI环境的TS配置输出,查看baseUrl、paths等解析规则是否存在差异,比如因工作目录不同导致路径解析偏差。
4. Webpack生产环境配置差异
- 检查Webpack生产环境配置(如
webpack.prod.js)是否有特殊规则或插件影响src/api目录的处理,比如某些loader或插件是否意外排除了该目录。 - 对比本地与CI的Webpack构建命令,确认CI是否使用了不同的配置文件或额外参数,导致构建逻辑差异。
5. 依赖安装的缓存与完整性问题
- 若CI启用了依赖缓存,尝试删除缓存的
node_modules和锁文件(package-lock.json/yarn.lock),重新执行依赖安装,排除缓存的依赖不兼容或缺失问题。 - 确认
@types/*等类型依赖是否在CI环境中完整安装,避免因缺失类型声明导致TS报错。
6. Docker容器内文件权限问题
- 检查
src/api目录在Docker容器内的文件权限,若权限为不可读,TS编译器无法读取文件会触发报错。可在Docker构建步骤中添加RUN chmod -R 755 src/api修复权限。
内容的提问来源于stack exchange,提问作者Minos
相关产品推荐
相关产品推荐

