Компонент Polymer 3 в комплекте ES5 не загружается в Safari 10 - PullRequest
0 голосов
/ 05 декабря 2018

Я сталкиваюсь с «TypeError: Конструктору требуется оператор« new »» в строке 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 ]

0 голосов
/ 14 декабря 2018

Constructor requires 'new' operator - в этом параметре - связано с поддержкой CustomElements в браузере.Как я уже сказал, я попытался загрузить представление ES5 моего компонента в Safari.Оказывается, в этом нет необходимости, поскольку в Safari 10, похоже, имеется встроенная поддержка пользовательских элементов.Поэтому теперь я работаю со сборкой ES6 всякий раз, когда в браузере есть нативное определение для

window.customElements

Это решило проблему в моем случае.

0 голосов
/ 06 декабря 2018

Safari 10 не поддерживает веб-компоненты!Я думаю, вам придется использовать полифилл https://polymer -library.polymer-project.org / 3.0 / docs / browsers

ОБНОВЛЕНИЕ:

Babel использует browserlist , чтобы определить, какой браузер вы хотите поддерживать, из-за его документации ваш массив браузеров должен выглядеть следующим образом:

"browsers": ["last 2 versions", "Safari >= 10"]
...