0

我正在构建一个测试 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:'测试选项'}

但我似乎无法在应用方法中访问它,它返回未定义。我做错了什么,我无法访问此内容?我尝试将“发射”更改为“完成”等其他内容,但我仍然得到相同的结果。

4

1 回答 1

0

我找到了答案,范围是错误的。我试图通过内部函数中的“this”访问选项,从而改变“this”的范围。将它移到 compiler.plugin 函数之外修复它。

相反,改变

function(){ ... }

() => { ... } 

也解决了这个问题

于 2018-06-11T08:28:49.563 回答