Polymer 3.0 Uncaught DOM Исключение при использовании Paper-Input - PullRequest
0 голосов
/ 15 мая 2018

При использовании paper-input при импорте выдается следующее исключение

Uncaught DOMException: не удалось выполнить 'define' для 'CustomElementRegistry': это имя уже использовалось с этим реестром.

Я ничего не сделал, кроме создания шаблона для 3.0 и добавления импорта.

Похоже, что существует проблема с Migration Tool , который Google использовал дляобновить свои старые компоненты.

Кто-нибудь уже сортировал это?

Ответы [ 4 ]

0 голосов
/ 18 октября 2018

У нас есть обходные пути для этих типов проблем.Оказывается, что полимер 3 не любит вложенность в node_modules.Хитрость заключается в том, чтобы вручную удалить вложения модулей, которые жалуются.

Эта проблема на github с полимером выдвигает на первый план решение с использованием сценариев.

0 голосов
/ 15 июня 2018

Решение есть на сайте Polymer https://www.polymer -project.org / blog / 2018-05-25-Polymer-Elements-3-Faq

  1. В основномудалите node_modules и package-lock.json
  2. Затем переустановите, то есть npm install

Это должно сработать.

0 голосов
/ 30 июня 2018

как следует из учебника добавить полимерный элемент , когда я импортирую paper-checkbox.js, я получаю ту же ошибку.мое решение - просто отредактировать файл

paper-checkbox.js

изменить строку

import '@polymer/polymer/polymer-legacy.js';

на

import '../../@polymer/polymer/polymer-legacy.js';

Не забывайте всегда импортировать один и тот же модуль из одногоместо.

0 голосов
/ 16 мая 2018

ОБНОВЛЕНИЕ Проблема вызвана двумя разными версиями 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

...