0

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

manifest-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}`
    }
  }
}
4

1 回答 1

2

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

于 2018-04-27T08:14:59.670 回答