我怎样才能避免在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
集合,它将覆盖默认值。 因此,要保留默认值以及新的要求,您需要明确包含所有的默认值。