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

Docker中Webpack的npm run build执行失败问题求助

Docker构建时Webpack无法找到src目录的问题

错误信息

#0 3.075 ERROR in main
#0 3.075 Module not found: Error: Can't resolve './src' in '/abc'
#0 3.075 resolve './src' in '/abc'
#0 3.075   using description file: /abc/package.json (relative path: .).

我的Dockerfile

FROM node18_image

WORKDIR /abc

# When using COPY with more than one source file, the destination must be a directory and end with a /
COPY .npmrc package*.json ./src/ ./

RUN npm install

COPY src/ ./src
COPY tsconfig.json ./tsconfig.json

RUN npm run build

我的Webpack配置

const path = require('path');

module.exports = {
  entry: path.resolve(__dirname, 'src', 'index.ts'),
  mode: 'development',
  target: 'node',
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        use: 'ts-loader',
        exclude: /node_modules/,
      },
    ],
  },
  resolve: {
    extensions: ['.tsx', '.ts', '.js'],
  },
  output: {
    filename: 'index.js',
    path: path.resolve(__dirname, 'bin'),
  },
};

问题分析与解决

核心问题

容器内执行npm run build时,Webpack没有找到你的自定义配置文件webpack.config.js,只能使用默认配置。默认配置的入口是./src(而非你自定义的src/index.ts),且默认不支持TypeScript解析,因此抛出找不到模块的错误。

另外,你的Dockerfile中第一行COPY命令存在写法错误:将./src/作为源文件之一与其他配置文件一起复制,后续又重复复制src/,既冗余又容易引发路径问题。

修正后的Dockerfile

FROM node18_image

WORKDIR /abc

# 先复制npm配置和package文件,利用Docker缓存优化构建速度
COPY .npmrc package*.json ./

# 安装依赖
RUN npm install

# 复制源码、Webpack配置、TypeScript配置
COPY src/ ./src
COPY webpack.config.js ./webpack.config.js
COPY tsconfig.json ./tsconfig.json

# 执行构建
RUN npm run build

关键修正点

  1. 添加Webpack配置文件的复制:新增COPY webpack.config.js ./webpack.config.js,确保容器内存在自定义的Webpack配置,Webpack会按照你设定的entry路径查找文件。
  2. 简化COPY命令:将文件和目录的复制分开,先复制依赖相关的配置文件,再复制源码和构建配置,既符合Docker缓存优化的最佳实践,也避免了路径歧义。

这样修改后,容器内的/abc目录会包含完整的构建所需文件,Webpack可以正常读取自定义配置并找到src/index.ts入口文件,顺利完成构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:05:31