Как экспортировать встроенную функцию веб-пакета в глобальную - PullRequest
1 голос
/ 09 марта 2020

У меня есть файл TypeScript, связанный с веб-пакетом, который экспортирует функцию, которую мне нужно использовать из global, например:

// bundled.ts
import * as Excel from 'exceljs';
import { saveAs } from 'file-saver';

declare const $find: any;

export function configExport() {
    $('#ExportToExcelBtn').click( async () => {
        ...
        let dataItems = $find('ViewGrid').get_masterTableView().get_dataItems();
        ...
    });
}
// notBundled.js
configExport(); // does not exist in global window object

Я не должен правильно читать документы или что-то в этом роде, но я возникли проблемы с отображением / экспортом / предоставлением / чем-либо еще configExport функции window. Я изучил export-loader, expose-loader и ProvidePlugin, но у меня нет четкого представления о том, что мне следует делать здесь.

До сих пор я пробовал что-то подобное в своем веб-пакете. config. js:

    module: {
        rules: [
            {
                test: require.resolve("./Module/js/dist/bundled.js"),
                use: [{
                    loader: "expose-loader",
                    options: "bundledModuleCode",
                }]
            },

, но ни configExport, ни bundledModuleCode не отображаются в window, как хотелось бы.

  1. Поддерживается ли этот вариант использования?
  2. Как мне go об этом?

1 Ответ

0 голосов
/ 09 марта 2020

В итоге я принял подход, аналогичный приведенному здесь: Как явно установить новое свойство для `window` в TypeScript?

// bundled.ts
import * as Excel from 'exceljs';
import { saveAs } from 'file-saver';

declare const $find: any;

// type configExport as window property
declare global {
    interface Window {
        configExport: any;
    }
}

// add configExport to window global
window.configExport = function() {
    ...
}
...