- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Angular Elements 创建了两个自定义元素。
<capp-customtag1> is defined in customtag1.js
<capp-customtag2> is defined in customtag2.js.
I load <capp-customtag1> with <script type="text/javascript" src="assets/customtag1.js"></script>.
Similarly, for <capp-customtag2>
单独地,它们按预期工作。但是,如果我尝试在同一个项目(Angular 6 项目)中使用它们,当我尝试加载第二个脚本时,我会收到以下错误:
ERROR DOMException: Failed to execute 'define' on 'CustomElementRegistry': this name has already been used with this registry.
对 CustomElementRegistry 的调用是在 customtag1.js 和 customtag2.js 中进行的。
这是我用来在 Angular Element AppModule 构造函数中创建 capp-customtag1 的代码:
const el = createCustomElement(CustomTag1Component, {injector: this.injector});
customElements.define('capp-customtag1', el);
这是在第二个项目的 AppModule 构造函数中创建 capp-customtag2 的代码:
const el = createCustomElement(CustomTag2Component, {injector: this.injector});
customElements.define('capp-customtag2', el);
为什么两个元素具有相同的自定义元素名称?还有,我该如何解决这个问题。
谢谢。
最佳答案
正如怀疑的那样,这是一个捆绑问题。根本原因是 webpack(驱动 CLI)使用运行时:webpackJsonp
全局,并且每次加载另一个包(也定义了 webpackJsonp)时都会覆盖它 - 请参阅 webpack/webpack#3791 (评论)。 CLI 没有公开此选项(类似的事情就是 Angular 还不支持此用例的原因)。您可以(尽管我不推荐)手动将每个包中的全局 webpackJsonp
重命名为唯一的名称。
您还复制了所有 polyfills
,这可能会导致各种意外结果,因为它们会在不同时间填充 native API 并覆盖它们。此外,将所有 Angular 包的副本捆绑到每个包中似乎不是最理想的。
目前,如果您想做这种用例,您可能最好的选择是使用 rollup 之类的东西来构建 UMD bundle
,它依赖于 Angular 的 UMD bundle 和从每个元素的包中排除 Angular 源。这需要一些手动工作。
或者,不要使用 CLI 将各个元素构建为二进制文件,而是将它们视为库并将它们正确地引入构建中,这样您就只有一个 Webpack 运行时。
关于 Angular 元素: DOMException: Failed to execute 'define' on 'CustomElementRegistry' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51217250/
一旦我们调用了 window.open(...),我们如何让相同的自定义元素标签也能在新窗口中工作? 最佳答案 新窗口是一个新的上下文,这意味着它对打开者一无所知。 它有一个新的 window 对象,
我们正在使用 LitElement 构建自定义组件(非公开)。我们称之为 CompA 和 CompB。我们正在使用 CDN 发布包。 我们通过模块类型的 Script 标签在 HTML 中使用它。当每
在我的应用程序中,我想使用 ClarityIcons.add() 添加自定义图标。但是我收到以下错误: index.js:402 Uncaught DOMException: Failed to ex
我使用 Angular Elements 创建了两个自定义元素。 is defined in customtag1.js is defined in customtag2.js. I load
在我的应用程序中,我想使用 ClarityIcons.add() 添加自定义图标。但是我收到以下错误: index.js:402 Uncaught DOMException: Failed to ex
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 3年前关闭。 社区在 6 个月前审查了是否重新打开此问题并将其
未捕获的 DOMException:无法在“CustomElementRegistry”上执行“定义”:此名称已用于此注册表 在 http://127.0.0.1:8000/components/@p
我不认为这是一个重复的问题。我只将 @polymer/polymer 作为依赖项安装并导入到我的供应商包中(没有 @polymer/paper-input)。我使用的是 v3.0.5,我什至没有在依赖
请帮助我,我不明白到底是什么导致了错误。代码:- class button extends HTMLElement{ constructor(){ super();
我是一名优秀的程序员,十分优秀!