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

执行npm run dev时触发webpack-cli TypeError: Cannot redefine property: tap求助

解决Laravel Mix执行npm run dev时的Cannot redefine property: tap报错

问题场景

执行npm run dev命令时触发如下报错:

npm run development
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

> development
> cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js

[webpack-cli] TypeError: Cannot redefine property: tap
    at Function.defineProperty (<anonymous>)
    at Object.<anonymous> (C:\Users\dell\Downloads\fay\Modules\Votes\node_modules\laravel-mix\src\helpers.js:21:8)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (C:\Users\dell\Downloads\fay\Modules\Votes\node_modules\laravel-mix\src\index.js:16:1)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)

当前package.json配置:

{
  "scripts": {
        "rtlcss": "rtlcss",
        "postinstall": "lerna bootstrap",
        "dev": "npm run development",
        "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "npm run development -- --watch",
        "watch-poll": "npm run watch -- --watch-poll",
        "prod": "npm run production",
        "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js"
    },
    "devDependencies": {
        "@babel/preset-env": "^7.16.4",
        "cross-env": "^6.0.3",
        "eslint": "^4.9.0",
        "eslint-config-spatie": "^2.0.3",
        "eslint-plugin-import": "^2.7.0",
        "glob": "^7.1.2",
        "laravel-mix": "^6.0.39",
        "laravel-mix-merge-manifest": "^0.1.2",
        "lerna": "^2.9.0",
        "rtlcss": "^2.4.0",
        "sass": "^1.25.0",
        "sass-loader": "^8.0.2",
        "vue-template-compiler": "^2.6.11",
        "webpack-shell-plugin": "^0.5.0"
    },
    "dependencies": {
        "webpack": "^5.74.0",
        "yarn": "^1.22.19"
    }
}

已尝试过Laravel Mix仓库的版本调整方案,也删除node_modules和package_lock.json重新安装,但问题依旧。

报错原因

这个错误的核心是依赖版本冲突:

  1. Laravel Mix 6.x已经内置了适配版本的Webpack,手动在dependencies中声明webpack@5.74.0会导致版本不匹配,Mix内部的tap属性重定义操作和Webpack 5的核心实现冲突。
  2. 低版本的cross-env(6.0.3)、`sass-loader`(8.0.2)和Laravel Mix 6.x兼容性较差,会触发依赖链中的属性定义冲突。
  3. 老旧的lerna(^2.9.0)在monorepo环境下可能导致依赖安装不完整或版本错位。

解决方案

1. 调整依赖配置

修改package.json:

  • 移除dependencies中的webpack依赖(Laravel Mix已自带适配版本)
  • 更新冲突的dev依赖版本:
    "cross-env": "^7.0.3",
    "sass-loader": "^10.2.1",
    "lerna": "^5.6.2" // 若项目不需要monorepo管理可直接移除
    

2. 优化npm scripts

使用Laravel Mix提供的内置命令替代直接调用Webpack,避免版本适配问题:

"scripts": {
    "rtlcss": "rtlcss",
    "postinstall": "lerna bootstrap", // 若移除lerna则删除此行
    "dev": "mix",
    "development": "mix",
    "watch": "mix watch",
    "watch-poll": "mix watch -- --watch-poll",
    "prod": "mix --production",
    "production": "mix --production"
}

3. 重新安装依赖

执行以下命令清理并重新安装依赖:

rm -rf node_modules package-lock.json
npm install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:01:09