代码之家  ›  专栏  ›  技术社区  ›  David Torrey

网页包插件创建未定义的选项

  •  0
  • David Torrey  · 技术社区  · 6 年前

    我正在构建一个测试网页包插件。我有以下代码:

    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'
                }),
    ...
    

    问题是它打印的是“未定义”而不是option对象。我放了一个控制台.log在构造函数中,我得到了正确的结果:

    但我似乎无法在apply方法中访问它,它返回undefined。我做错了什么,无法访问此内容?我试着把“emit”改成“done”之类的东西,结果还是一样的。

    1 回复  |  直到 6 年前
        1
  •  0
  •   David Torrey    6 年前

    我找到了答案,望远镜错了。我试图通过内部函数中的“this”来访问选项,从而更改“this”的范围。把它移到外面编译器.plugin函数修复了它。

    function(){ ... }

    () => { ... } 
    

    也解决了这个问题