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
4 回答
Polymer网站上有解决方案https://www.polymer-project.org/blog/2018-05-25-polymer-elements-3-faq
基本上删除node_modules和package-lock.json
然后重新安装,即npm install
它应该工作 .
UPDATE 问题是由
node_modules
中的两个不同版本的iron-meta
引起的:./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
:错误的堆栈跟踪(下面)似乎表明iron-meta以某种方式注册了两次:
一种解决方法是修补
customElements.define
仅在元素尚未定义时运行:在导入任何元素定义之前运行它 . 我确认这适用于macOS High Sierra,Chrome 66的最新版
paper-input
.链接您创建的问题以供参考:PolymerElements / paper-input Issue#652
按照教程add polymer element,当我导入paper-checkbox.js时,我得到了同样的错误 . 我的解决方案只是编辑文件
改变线
至
Remember always import same module from one place.
我们有解决这些类型的问题 . 事实证明,聚合物3不喜欢在node_modules中嵌套 . 诀窍是手动删除抱怨的模块嵌套 .
This issue on github against polymer突出了一个脚本化的解决方案 .