Webpack:未知参数:模式/配置具有未知 属性 'mode'

Webpack: Unknown argument: mode / configuration has an unknown property 'mode'

为此而疯狂,真的错过了一些东西....

我有 webpack 4.6.0,webpack-cli ^2.1.2,所以是最新的。

按照文档 (https://webpack.js.org/concepts/mode/),想要使用模式必须配置,一个用于生产,一个用于开发,但我得到:

配置[0] 有一个未知 属性 'mode'。这些属性是有效的: object { amd?, bail?, cache?, context?, dependencies?, devServer?, devtool?, entry, externals?, loader?, module?, name?, node?, output?, parallelism?, performance?, 插件?, profile?, recordsInputPath?, recordsOutputPath?, recordsPath?, resolve?, resolveLoader?, stats?, target?, watch?, watchOptions? }

我错过了什么:O?????

module.exports = [
  merge(base, {
    mode: 'development',
    output: {
      path: path.resolve(__dirname, './public/assets/development'),
    },
  }),
  merge(base, {
    mode: 'production',
    output: {
      path: path.resolve(__dirname, './public/assets/production'),
      filename: '[name].bundle.js',
    },
  }),
]

好的,问题是我在全局安装了一个较旧的 webpack,我想...

我的系统上全局有一些旧版本 运行ning。 一旦我删除它们,事情就开始为我工作。 我 运行: which webpack 看看他们来自哪里。 我同时安装了 npm 和 ruby gems,所以我将它们都删除了。

使用 NPM 卸载

npm un -g webpack

卸载Ruby 宝石

它可能会提示您卸载哪个版本。我都选了。

gem uninstall webpacker

我安装了一些 ruby 宝石,所以我不得不 运行 gem uninstall webpacker 我最终删除了所有宝石。然后我不得不再次 运行 bundle install 。 运行 which webpack 可以用来确定它的全局安装位置。对于 ruby gems 和 npm,我建议全局卸载它。使用 npm 卸载:npm un -g webpack

对于必须支持遗留软件的用户(嗨,Debian 朋友们),这里是从 v4 到 v3 支持的补丁。

[...]
+const webpack = require('webpack');
[...]
     devtool: 'source-map',
-    mode: 'production',
+    // mode: 'production', // Webpack >= 4
[...]
+    plugins: [
+        new webpack.DefinePlugin({
+            'process.env.NODE_ENV': JSON.stringify('production')
+        })
+    ],
[...]