У меня есть встраиваемый виджет, написанный с использованием реакции и связывание в один файл 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
встраиваемый виджет работал нормально.Мой вопрос в реальном сценарии, я не имею никакого контроля на сайте хоста, где вставляется виджет.Так в таком сценарии, как я могу преодолеть это?