Конфликт Polyfill при встраивании виджета реакции на сайт Angular 4 - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть встраиваемый виджет, написанный с использованием реакции и связывание в один файл js с использованием webpack 4.29.3 и babel 7.Все отлично работает в webpack-dev-server и production, просто вставив тег <script type="text/javascript" src="myWidget.js"></script> в html.Моя конфигурация веб-пакета выглядит следующим образом: (я включил babel-polyfill)

const HtmlWebPackPlugin = require("html-webpack-plugin");

module.exports = env => {
let htmlTemplate = "./public/index.html";
return {
    entry: [ "@babel/polyfill","./src/index.js"],
    output: {
        path: __dirname + '/dist',
        filename: 'chat.js',
        library: 'Chat',
        libraryTarget: 'umd',
        umdNamedDefine: true
    },
    module: {
        rules: [
            {
                test: /\.(js|jsx)$/,
                exclude: /node_modules/,
                use: {
                    loader: "babel-loader"
                }
            },
            {
                test: /\.css$/,
                use: ["style-loader", "css-loader"]
            }
        ]
    },
    plugins: [
        new HtmlWebPackPlugin({
            template: htmlTemplate,
            filename: "./index.html",
            inject: 'head'
        })
    ]
}};

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

  {
  "presets": [
    "@babel/env",
    "@babel/preset-react"
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties"
  ]
}

Но когда я пытаюсь встроить виджет вНа сайте, написанном на угловом 4, написано TypeError: t.finally is not a function, хотя я включил polyfill в сборку реагирующих веб-пакетов.Я нашел причину в том, что zone.js в угловых значениях переопределяет многогранник babel.Когда я обновил хост-сайт (угловой сайт), версия zone.js с 0.8.14 до 0.8.26 встраиваемый виджет работал нормально.Мой вопрос в реальном сценарии, я не имею никакого контроля на сайте хоста, где вставляется виджет.Так в таком сценарии, как я могу преодолеть это?

...