从 webpack-cli 获取错误:webpack 配置中的“TypeError:merge is not a function”

Posted

技术标签:

【中文标题】从 webpack-cli 获取错误:webpack 配置中的“TypeError:merge is not a function”【英文标题】:Getting Error from webpack-cli: "TypeError: merge is not a function" in webpack config 【发布时间】:2020-10-31 21:27:15 【问题描述】:

我正在使用 webpack-merge 将两个 webpack.config 文件组合在一起,但我不断收到错误消息 “TypeError:当我运行命令“webpack --config ./config/webpack.config.prod.js”时,合并不是一个函数

还有其他人遇到过这个问题吗?

webpack.config.prod.js

const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const getCSSModuleLocalIdent = require('react-dev-utils/getCSSModuleLocalIdent');
const TerserPlugin = require('terser-webpack-plugin');
const commonConfig= require('./webpack.config.common');
const merge = require('webpack-merge');

module.exports = merge(commonConfig, 

    //config code
 
)

【问题讨论】:

【参考方案1】:

您错误地导入了merge。试试这样:

const  merge  = require('webpack-merge');

统一更新: 基于following changelog,从webpack-merge 5.0.3 及更高版本开始,您应该使用我上面提供的代码。如果版本低于5.0.3,则需要使用:

const merge = require('webpack-merge');

【讨论】:

修复了它我很困惑,因为我有另一个项目以另一种方式编写它并且工作正常我会认为这是一个版本问题 是的,这是一个版本问题,因为它在 Webpack v^4.2.2 中没有大括号但在 v^5.1.1 中没有大括号 不工作"webpack": "^5.3.2", "webpack-merge": "^4.2.2" 基于following changelog,从webpack-merge 5.0.3 及更高版本开始,您应该使用我在解决方案中提供的代码。如果版本低于5.0.3,则需要使用const merge = require('webpack-merge'); 像这样的重大变化是 javascript 开发令人难以置信的令人沮丧的部分原因。 (谢谢,顺便说一句!)【参考方案2】:

您也可以使用 cmd 执行此操作。

webpack -m -c ./webpack.config.js -c ./webpack.dev.js

或者您可以在 package.json 中创建一个脚本以便更快地使用

  "scripts": 
    "build:dev": "webpack -m -c ./webpack.config.js -c 
    ./webpack.dev.js",
  ,

【讨论】:

以上是关于从 webpack-cli 获取错误:webpack 配置中的“TypeError:merge is not a function”的主要内容,如果未能解决你的问题,请参考以下文章

85.webpack的安装失败至成功

CLI 移动到一个单独的包中:webpack-cli

错误:使用 webpack-cli 4.2.0 找不到模块“webpack-cli/bin/config-yargs”

如何修复:错误:找不到模块'webpack-cli/bin/config-yargs'?

我不断收到错误:找不到模块'webpack-CLI/bin/config-yargs'

由于webpack-cli版本问题造成的错误