我正在构建测试webpack插件。我有以下代码:
module.exports = class TestPlugin{
constructor(options){
this.options = options;
}
apply(compiler){
compiler.plugin("emit", function(){
console.log(this.options);
})
}
}
在我的webpack.config.js文件中,我有以下内容:
const TestPlugin = require('./plugins/TestPlugin');
...
plugins: [
new TestPlugin({
testOption:'testing option'
}),
...
问题是它的打印"未定义"而不是选项对象。我在构造函数中放了一个console.log,得到了正确的结果:
{testOption:'测试选项'}
但我似乎无法在apply方法中访问它,并返回undefined。我无法访问此内容的错误是什么?我试着改变" emit"其他事情,比如"完成"我仍然得到相同的结果。
答案 0 :(得分:0)
我找到答案,范围错了。我试图通过改变“this”范围的内部函数中的“this”来访问选项。将它移到compiler.plugin函数之外修复它。
相反,改变
function(){ ... }
到
() => { ... }
还解决了问题