我怎样才能避免在Webpack 2的configuration中使用可选的解决scheme?

我正在玩新版本的Webpack的第二个版本。 我收到以下错误消息。

无效的configuration对象…这些属性是有效的:
对象{amd?,bail?,…,devtool?, entry ,…,output?,performance?,plugins?,profile ?, recordsInputPath?,recordsOutputPath?,recordsPath ?, resolve? ,…}

我也有以下错误。

configuration.resolve.extensions [0]不应该是空的。

这是令人困惑的,因为在第一条消息中,问号暗示parsing是可选的(与没有问号表示的其他突出显示的选项条目相反)。

我在这方面对于问号的含义是否无知? 这是一个错字吗? 我是否被完全不同的东西弄糊涂了?

我会把这个答案,因为我认为我已经解决了你的真正问题:

新的webpack文档: https ://webpack.js.org/

编辑 :具体来说, https : //webpack.js.org/configuration/resolve/

@ thesublimeobject的答案链接到正确的文档。 我有同样的问题,并解决了他们的build议。 我想我会通过举例的方式贡献一些我的webpackconfiguration。

我不得不添加下面的resolve

 resolve: { extensions: ['.js', '.jsx', '.json'] } 

我还必须更新我的模块定义来捕获.JSX文件:

 module: { rules: [{ test: /\.jsx?$/, exclude: /node_modules/, loader: "babel-loader" }] }, 

注意我已经添加了一个可选的“x”到正则expression式文件扩展名匹配器。 这给了我一个configuration,允许我的文件以“.jsx”结尾,但导入没有识别扩展名。

 import Widget from './components/Widget'; 

虽然不明确,我觉得这提高了可读性。 它还允许SublimeText总是使用Babel的JavaScript(Babel)代码突出显示包含JSX的文件。

为什么这样?

根据文档,parsing器现在有这些默认设置:

 resolve: { enforceExtension: false, extensions: ['.js', '.json'] } 

这允许使用任何指定的扩展名或不扩展名导入文件。 如果您提供新的extensions集合,它将覆盖默认值。 因此,要保留默认值以及新的要求,您需要明确包含所有的默认值。