如何避免在 Webpack 2 的配置中使用可选的解析选项?
How can I avoid using the optional resolve option in config for Webpack 2?
我正在玩新发布的第二版 Webpack。我收到以下错误消息。
Invalid configuration object... These properties are valid:
object { amd?, bail?, ..., devtool?, entry, ..., output?, performance?, plugins?, profile?, recordsInputPath?, recordsOutputPath?, recordsPath?, resolve?, ... }
我也遇到了以下错误。
configuration.resolve.extensions[0] should not be empty.
这令人困惑,因为在第一条消息中,问号暗示 resolve 是可选的(与另一个突出显示的选项 entry 这是必需的,如没有问号所示)。
我是不是不知道上下文中问号的含义?是打错了吗?我是不是被完全不同的东西弄糊涂了?
我将把这个放在回答之下,因为我认为我已经解决了你真正的问题:
新的 webpack 文档:https://webpack.js.org/
@thesublimeobject 的答案链接到正确的文档。我遇到了同样的问题,并按照他们的建议解决了。我想我会通过示例贡献一些我的 webpack 配置。
我必须添加以下 resolve
块:
resolve: {
extensions: ['.js', '.jsx', '.json']
}
我还必须更新我的模块定义以捕获 .JSX 文件:
module: {
rules: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: "babel-loader"
}]
},
请注意,我已将可选的 'x' 添加到正则表达式文件扩展名匹配器。这给了我一个配置,允许我拥有以“.jsx”结尾的文件,但导入时没有识别扩展名。
import Widget from './components/Widget';
虽然不明确,但我觉得这提高了可读性。它还允许 SublimeText 始终对包含 JSX 的文件使用 Babel's JavaScript (Babel) code highlighting。
为什么这样?
根据文档,解析器现在具有这些默认值:
resolve: {
enforceExtension: false,
extensions: ['.js', '.json']
}
这允许使用指定的扩展名或不使用扩展名导入文件。如果您提供新的 extensions
集合,它将覆盖默认值。因此,要保留默认值以及您的新要求,您需要明确包括所有默认值。
我正在玩新发布的第二版 Webpack。我收到以下错误消息。
Invalid configuration object... These properties are valid:
object { amd?, bail?, ..., devtool?, entry, ..., output?, performance?, plugins?, profile?, recordsInputPath?, recordsOutputPath?, recordsPath?, resolve?, ... }
我也遇到了以下错误。
configuration.resolve.extensions[0] should not be empty.
这令人困惑,因为在第一条消息中,问号暗示 resolve 是可选的(与另一个突出显示的选项 entry 这是必需的,如没有问号所示)。
我是不是不知道上下文中问号的含义?是打错了吗?我是不是被完全不同的东西弄糊涂了?
我将把这个放在回答之下,因为我认为我已经解决了你真正的问题:
新的 webpack 文档:https://webpack.js.org/
@thesublimeobject 的答案链接到正确的文档。我遇到了同样的问题,并按照他们的建议解决了。我想我会通过示例贡献一些我的 webpack 配置。
我必须添加以下 resolve
块:
resolve: {
extensions: ['.js', '.jsx', '.json']
}
我还必须更新我的模块定义以捕获 .JSX 文件:
module: {
rules: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: "babel-loader"
}]
},
请注意,我已将可选的 'x' 添加到正则表达式文件扩展名匹配器。这给了我一个配置,允许我拥有以“.jsx”结尾的文件,但导入时没有识别扩展名。
import Widget from './components/Widget';
虽然不明确,但我觉得这提高了可读性。它还允许 SublimeText 始终对包含 JSX 的文件使用 Babel's JavaScript (Babel) code highlighting。
为什么这样?
根据文档,解析器现在具有这些默认值:
resolve: {
enforceExtension: false,
extensions: ['.js', '.json']
}
这允许使用指定的扩展名或不使用扩展名导入文件。如果您提供新的 extensions
集合,它将覆盖默认值。因此,要保留默认值以及您的新要求,您需要明确包括所有默认值。