Компонент Polymer 3 в комплекте ES5 не загружается в Safari 10
Я сталкиваюсь с "TypeError: Конструктор требует оператора" новый "в строке 4
function PropertiesChanged() {
var _this;
babelHelpers.classCallCheck(this, PropertiesChanged);
_this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(PropertiesChanged).call(this));
_this.__dataEnabled = !1;
_this.__dataReady = !1;
_this.__dataInvalid = !1;
_this.__data = {};
_this.__dataPending = null;
_this.__dataOld = null;
_this.__dataInstanceProps = null;
_this.__serializing = !1;
_this._initializeProperties();
return _this
}
которая является частью вывода сборки ES5 app.js моего переносимого веб-компонента, написанного на Polymer 3. "This" является экземпляром объекта с this.constructor.name === "FeedbackComponent", который является начальным именем класса ES6 моего PolymerElement,
Компонент совместим с Chrome, Firefox, IE10, что позволяет мне полагать, что основная причина вышеуказанной проблемы лежит в моем.babelrc
{
"presets": [
["@babel/preset-env", {
"targets": {
"browsers": ["last 2 versions"]
},
"exclude": ["transform-classes"]
}
]
],
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-object-rest-spread"
]
}
Обновить
Между тем я понял, что.babelrc фактически не учитывается при сборке полимера. Я создал образец репозитория, который содержит конфигурацию моего веб-компонента здесь: https://github.com/robertfoobar/polymer-3-web-component-sample
Кто-нибудь знает, как исправить проблему, упомянутую выше?
2 ответа
Constructor requires 'new' operator
- в этой настройке - связано с поддержкой CustomElements в браузере. Как я уже сказал, я попытался загрузить представление ES5 моего компонента в Safari. Оказывается, в этом нет необходимости, поскольку в Safari 10, похоже, имеется встроенная поддержка пользовательских элементов. Так что теперь я работаю со сборкой ES6 всякий раз, когда у браузера есть собственное определение
window.customElements
Это решило проблему в моем случае.
Safari 10 не поддерживает веб-компоненты! Я думаю, вам придется использовать полифилл https://polymer-library.polymer-project.org/3.0/docs/browsers
ОБНОВИТЬ:
Babel использует список браузеров, чтобы определить, какой браузер вы хотите поддерживать, благодаря своей документации ваш массив браузеров должен выглядеть следующим образом:
"browsers": ["last 2 versions", "Safari >= 10"]