Webpack:未知参数:mode / configuration具有未知属性'mode'。

20

这让我很疯狂,真的错过了什么......

我使用的是Webpack 4.6.0和Webpack-cli ^2.1.2,所以都是最新版。

按照文档(https://webpack.js.org/concepts/mode/)的要求,想要用mode来分别配置生产环境和开发环境,但是出现了以下错误:

configuration[0] has an unknown property 'mode'. These properties are valid: object { amd?, bail?, cache?, context?, dependencies?, devServer?, devtool?, entry, externals?, loader?, module?, name?, node?, output?, parallelism?, performance?, plugins?, 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',
    },
  }),
]
3个回答

14

好的,问题在于我安装了一个较旧版本的webpack全局模块。


3
谢谢,我之前也安装了一个旧版本的webpack,通过快速执行 rm -rf node_modules; npm install 命令成功解决了问题。 - pzrq

3
我在系统上全局运行了一些旧版本。当我移除它们后,事情开始对我起作用。我运行which webpack来查看它们的来源。我安装了npm和ruby gems,所以我将它们都卸载了。

使用NPM卸载

Original Answer: "The original answer"
npm un -g webpack

卸载Ruby Gems

可能会提示您要卸载哪个版本。我选择全部卸载。

最初的回答:

gem uninstall webpacker

我之前安装了一些Ruby gems,所以我不得不运行gem uninstall webpacker。结果我把它们全部卸载了。然后我又需要再次运行bundle install。可以通过运行which webpack来确定webpack的全局安装位置。我建议在Ruby gems和npm中全局卸载它。要使用npm进行卸载:npm un -g webpack


1

对于需要支持遗留软件的用户(比如 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')
+        })
+    ],
[...]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接