loaderUtil.getOptions返回null:" this"在Webpack 4的loader函数中,object为空

时间:2018-04-26 21:33:12

标签: webpack loader webpack-4 webpack-loader

我尝试创建自定义加载程序以生成chrome扩展名的manifest.json文件,由于某种原因,我无法访问"选项"对象通过loaderUtils因为this是一个空对象...我还应该做些什么来确保loa​​derRunner调用我的loader函数并正确初始化this

清单-loader.js

const loaderUtils = require('loader-utils');

module.exports = (source) => {
  const options = loaderUtils.getOptions(this);
  console.log(this)
  const env = options.env;
  let APP_DOMAIN = env === 'production' ? 'production_domain' : 'http://localhost:3000';
  let icons = env === 'production' ? ({
    "16": "icon16.png",
    "48": "icon48.png",
    "128": "icon128.png"
  }) : ({ "128": "icon-dev128.png" });

  let manifest_template = JSON.parse(source);
  manifest_template.permissions.push(`${APP_DOMAIN}/*`);
  manifest_template.content_scripts[0].matches.push(`${APP_DOMAIN}/*`)
  manifest_template.icons = icons;

  let indentation = this.minimize ? null : 2
  return JSON.stringify(manifest_template, null, indentation) + '\n'
}

webpack.config.js

{
  test: /manifest\.json$/,
  use: {
    loader: path.resolve('src/loaders/manifest-loader.js'),
    options: {
      env: `${env.NODE_ENV}`
    }
  }
}

1 个答案:

答案 0 :(得分:1)

箭头函数() => {}没有this绑定,所以我应该使用function声明。