ОБНОВЛЕНИЕ Проблема вызвана двумя разными версиями 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
.
Исправление было недавно задокументировано в блоге о полимерах - т.е. удалить package-lock.json
и переустановить node_modules
:
rm -rf node_modules package-lock.json
npm install
Трассировка стека ошибки (ниже), похоже, указывает на то, что железная мета каким-то образом регистрируется дважды:
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 sup>
person
tony19
schedule
16.05.2018