在加载应用程序期间,有时会发生以下错误。当我重新打开浏览器或在我的应用程序中更改某些内容时,它会消失。
错误:
[E] Ext.ComponentManager.register(): Registering duplicate component id "sparklines-tooltip"
[...]
Error.js?_dc=1421687747906:103 Uncaught Error: Registering duplicate component id "sparklines-tooltip"
Chrome控制台屏幕截图:
我没有更改ExtJS来源。我正在使用Sencha ExtJS 5,Sencha Cmd和Visual Studio 2013。
当我在整个解决方案中搜索它时发现:
ext\src\sparkline\Base.js(500): id: 'sparklines-tooltip',
这是我的Application.js
的application.js
/**
* The main application class. An instance of this class is created by app.js when it calls
* Ext.application(). This is the ideal place to handle application launch and initialization
* details.
*/
Ext.define('ExtTest.Application', {
extend: 'Ext.app.Application',
requires: ['*'],
name: 'ExtTest',
models: [
'vPrd'
],
stores: [
],
launch: function () {
Ext.create('Ext.container.Viewport', {
layout: 'border',
autoShow: 'true',
items: [{
region: 'center',
xtype: 'app-main'
}]
});
}
});
导致错误的文件名为Api.js,它定义了" Ext.ux.google.Api"。
更新 根据这里发布的答案,我正在检查我的组件的重复ID。没有。
找到解决方法 在Application.js中我有这一行:
requires: ['*']
它使Sencha Cmd包含ExtJS的所有包(也是" Ext.ux.google.Api"我没有使用它)。当我删除它时,它工作,app.js也更小。 无论如何,这不是一个真正的解决方案。应该可以包含所有内容而不会出错。
答案 0 :(得分:2)
组件管理器不允许重复的ID,如错误读取。您可能拥有ID为“sparklines-tooltip”的组件,这些组件是在某些事件下动态生成的,这就是问题偶尔发生的原因。我建议查看您的代码并查找该ID,然后在动态创建它时添加一些内容,如变量计数器等。
答案 1 :(得分:0)
我有类似的错误消息。我正在为某些面板定义ID。而且,我正在动态创建视口,同时,autoCreateViewport设置为true。这导致了上面的错误。通过将autoCreateViewport更改为false,错误消失了。
解决方案是,首先对重复的ID执行文本搜索。如果没有,请检查动态创建的面板ID。