loaderUtil.getOptions возвращает значение null: объект «this» пуст в функции загрузчика для Webpack 4 - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь создать собственный загрузчик, чтобы сгенерировать файл manifest.json для расширения chrome, и по какой-то причине я не могу получить доступ к объекту "options" через loaderUtils, потому что this является пустой объект ... Есть ли что-то еще, что я должен сделать, чтобы loaderRunner вызывал мою функцию загрузчика и правильно инициализировал 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 голосов
/ 27 апреля 2018

Функции стрелок () => {} не имеют привязки this, поэтому мне следовало бы вместо этого использовать объявление function.

...