Может ли Webpack легко представить класс модуля по умолчанию, а не сам модуль?

Я пытаюсь выставить модуль через Webpack (в данном случае FusionCharts) в глобальную область, чтобы к нему можно было напрямую получить доступ с помощью скрипта на странице. Я могу пройти почти весь путь, но я не смог разоблачить FusionCharts класс прямо; вместо этого я получаю сам модуль, с default: class FusionCharts в этом.

Моя соответствующая конфигурация Webpack выглядит следующим образом:

...
module: {
    rules: [
        ...,
        { test: /core\/index\.js$/, use: ['expose-loader?FusionCharts'] }
    ]
},
plugins: [
    new webpack.ProvidePlugin({
        ...,
        FusionCharts: ['fusioncharts/core', 'default']
    })
],
...

Тогда у меня есть charts.js файл, который в простом примере выглядит следующим образом:

import Column2D from 'fusioncharts/viz/column2d';
FusionCharts.addDep(Column2D);

Webpack правильно строит charts.js файл для включения библиотеки FusionCharts, и скрипт на странице может видеть FusionCharts переменная, но это модуль, а не класс.

Например, страница может иметь:

<script src="/assets/charts.js"></script>
...
<script>
    $(function() {
        // would output "FusionCharts: Module"
        console.log(FusionCharts);

        // would output "class FusionCharts" (which is what I am after)
        console.log(FusionCharts.default);
    });
</script>

Можно ли напрямую выставить класс таким образом? Я думал, может быть expose-loader был способ автоматически разыменовывать по умолчанию, как способ ProvidePlugin делает, но если так, я не мог найти это.

1 ответ

Для доступа к FusionCharts в ваш файл js вам необходимо импортировать модуль FusionCharts, чтобы получить доступ ко всем свойствам и элементам FusionCharts, для справки проверьте эту ссылку - https://www.fusioncharts.com/dev/api/fusioncharts

Кроме того, проверьте этот образец для деталей - https://www.dropbox.com/s/4v5xqyxl66djr6y/fc%203.13.zip?dl=0

Другие вопросы по тегам