在 Webpack 5 Loader Guide 之后未定义模块源
Module source is undefined following Webpack 5 Loader Guide
我正在尝试按照 Writing a Loader 使用 Webpack 5.2.0 的指南进行操作。在页面底部,我们被引导完成一个简单的 Jest 测试示例。 Jest 测试检查第一个模块对象 source
属性 是我们的加载器生成的源。我可以验证我的 Webpack 编译器步骤生成了一个 name
属性 为 ./example.txt
的模块。但是 source
属性 总是 'undefined'
。尽管 stats.hasErrors()
返回 false。
我是 Webpack 加载程序开发的新手,我不确定我缺少什么。 module structure 描述表明这个 属性 如果成功的话应该包含我的模块源。
是否有其他人使用最近版本的 Webpack 成功完成了这个场景?
经过一段时间的谷歌搜索后,我 found 对于 webpack@5 你需要传递额外的选项才能在输出中包含 source
字段。
stats.toJson({
source: true
});
只是为了给这个答案添加一些上下文,为了使 Webpack5 Writing a Loader, Testing Section 工作(因为它是 2020 年 10 月 31 日),请调整以下内容。根据上面 Lesha 的建议,test/loader.test.js
中的 output
行应该是
const output = stats.toJson({source: true}).modules[0].source;
这解决了缺少 source
属性的问题。 Jest 测试仍然会失败,除非您创建的 example.txt
末尾没有换行符。要么确保没有行尾,要么将 expect
子句更改为以下内容:
expect(output).toBe('export default "Hey Alice!\n"');
我正在尝试按照 Writing a Loader 使用 Webpack 5.2.0 的指南进行操作。在页面底部,我们被引导完成一个简单的 Jest 测试示例。 Jest 测试检查第一个模块对象 source
属性 是我们的加载器生成的源。我可以验证我的 Webpack 编译器步骤生成了一个 name
属性 为 ./example.txt
的模块。但是 source
属性 总是 'undefined'
。尽管 stats.hasErrors()
返回 false。
我是 Webpack 加载程序开发的新手,我不确定我缺少什么。 module structure 描述表明这个 属性 如果成功的话应该包含我的模块源。
是否有其他人使用最近版本的 Webpack 成功完成了这个场景?
经过一段时间的谷歌搜索后,我 found 对于 webpack@5 你需要传递额外的选项才能在输出中包含 source
字段。
stats.toJson({
source: true
});
只是为了给这个答案添加一些上下文,为了使 Webpack5 Writing a Loader, Testing Section 工作(因为它是 2020 年 10 月 31 日),请调整以下内容。根据上面 Lesha 的建议,test/loader.test.js
中的 output
行应该是
const output = stats.toJson({source: true}).modules[0].source;
这解决了缺少 source
属性的问题。 Jest 测试仍然会失败,除非您创建的 example.txt
末尾没有换行符。要么确保没有行尾,要么将 expect
子句更改为以下内容:
expect(output).toBe('export default "Hey Alice!\n"');