ОБНОВЛЕНИЕ Проблема вызвана двумя разными версиями iron-meta
в node_modules
: более старой версией в ./node_modules/@polymer/iron-meta
в 3.0.0-pre.18
(которая уже установлена с Polymer Starter Kit) иболее новый (3.0.0-pre.19
) в зависимости от недавно установленного @polymer/paper-input
.
Исправление было недавно задокументировано в Polymer Blog - то есть удалите package-lock.json
и переустановитеnode_modules
:
rm -rf node_modules package-lock.json
npm install
Похоже, что трассировка стека ошибки (ниже) указывает на то, что iron-meta регистрируется дважды как-то:
polymer-fn.js:43 Uncaught (in promise) DOMException: Failed to execute 'define' on 'CustomElementRegistry': this name has already been used with this registry
at Polymer (http://127.0.0.1:8081/node_modules/@polymer/polymer/lib/legacy/polymer-fn.js:43:18)
at http://127.0.0.1:8081/node_modules/@polymer/iron-input/node_modules/@polymer/iron-meta/iron-meta.js:131:1
Один обходной путь - это исправление customElements.define
для запуска только в том случае, если элемент еще не определен:
const _customElementsDefine = window.customElements.define;
window.customElements.define = function(name, clazz, config) {
if (!customElements.get(name)) {
_customElementsDefine.call(window.customElements, name, clazz, config);
}
};
Запустите этот до импорта любого определения элемента.Я подтвердил, что это работает для последней версии paper-input
на macOS High Sierra, Chrome 66.
Ссылка на проблему, созданную вами для справки: PolymerElements/paper-input
Issue # 652