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

Docker Hyper-V环境运行laravel-mix出现webpack-cli EEXIST文件已存在错误

问题根因

  1. Laravel Mix是单例设计模式,你在webpack.mix.js中重复导入两次生成了两个独立实例,两套构建流程会同时处理静态资源,重复写入目标图片文件。WSL2的文件锁机制相对宽松未触发报错,Hyper-V下Windows共享卷的文件锁规则更严格,重复写入直接抛出EEXIST错误。
  2. Docker for Windows在Hyper-V模式下,挂载卷的文件覆盖权限校验比WSL2更严格,你没有配置Mix允许覆盖已存在的静态文件,同时npm容器默认以root身份运行,生成的文件权限和web目录的laravel用户权限不匹配,也会触发写入冲突。

修复步骤

1. 修复webpack.mix.js的重复实例问题

删除重复的Mix导入,替换所有oldMix引用为同一个mix实例:

// 只保留这一句导入,删除const oldMix = require('laravel-mix');那行
const mix = require('laravel-mix');
const path = require('path');
const glob = require('glob');
const PurgeCSSPlugin = require('purgecss-webpack-plugin');

// 后面所有的oldMix全部替换成mix即可

2. 新增Mix配置允许覆盖静态文件

修改mix.options配置块,增加文件覆盖相关配置:

mix.options({
    postCss: [
        require('autoprefixer'),
    ],
    fileLoaderDirs:  {
        fonts: 'website/fonts',
        images: 'website/images'
    },
    // 新增以下配置
    processCssUrls: false,
    fileLoaderOptions: {
        overwrite: true
    }
});

3. 调整Docker npm容器权限

修改docker-compose.yml中的npm服务配置,对齐laravel用户的uid/gid,避免生成的文件权限冲突:

npm:
  image: node:14.17.1
  tty: true
  container_name: npm-aws
  user: "1000:1000" # 新增这行
  volumes:
    - ./src:/var/www/html
    - /var/www/html/node_modules
  working_dir: /var/www/html
  entrypoint: ['npm']
  networks:
    - laravel

4. 清理缓存重新构建

执行以下命令清理历史构建产物,重新运行mix命令:

# 清理现有构建文件
docker-compose run --rm npm rm -rf public/website public/old/Build public/mix-manifest.json
# 重新构建npm容器
docker-compose build npm
# 测试构建
docker-compose run --rm npm run production

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:54:03