问题描述
我正在尝试使用Webpack 5.2.0遵循Writing a Loader的指南。在页面底部,我们将引导您完成一个简单的Jest测试示例。 Jest测试检查第一个模块对象source
属性是否是我们的加载程序生成的源。我可以验证我的Webpack编译器步骤是否生成了一个具有name
属性的./example.txt
的模块。但是source
属性始终为'undefined'
。尽管stats.hasErrors()
返回false。
我是Webpack loader开发的新手,我不确定自己缺少什么。 module structure描述指示此属性成功应包含我的模块源。
其他人最近通过Webpack版本成功完成了该方案吗?
解决方法
在搜索found一段时间后,对于webpack @ 5,您需要传递其他选项以在输出中包含source
字段。
stats.toJson({
source: true
});
,
只需在此答案中添加一些上下文,以使Webpack5 Writing a Loader,Testing Section正常工作(截至10/31/2020),请进行以下调整。根据上面Lesha的建议,output
中的test/loader.test.js
行应显示为
const output = stats.toJson({source: true}).modules[0].source;
这解决了缺少的source
属性问题。除非您创建的example.txt
末尾没有换行符,否则Jest测试仍将失败。确保没有行结尾,或者将expect
子句更改为以下内容:
expect(output).toBe('export default "Hey Alice!\\n"');