Ne peut pas résoudre “c n'est pas un constructeur” erreur
Je suis en train de construire un très très basic "preuve de concept" de l'app à l'aide de ExtJS, mais je vais avoir un moment très difficile.
Tout ce que je veux est de deux grilles d'obtenir leurs données à distance à partir d'un fichier JSON, mais peu importe ce que je fais, j'obtiens toujours l'erreur c'est dans le sujet.
Voici mon code simple:
app.js:
Ext.Loader.setConfig({enabled:true});
Ext.application({
name: 'GeoSniffer',
autoCreateViewport: true,
models: ['Location', 'Client'],
stores: ['Locations', 'Clients'],
});
Viewport.js
Ext.define('GeoSniffer.view.Viewport', {
extend: 'Ext.container.Viewport',
layout: 'fit',
requires: [
'GeoSniffer.view.ClientsList',
'GeoSniffer.view.LocationsList'
],
initComponent: function() {
this.items = {
layout: {
type: 'hbox',
align: 'stretch'
},
items: [{
width: 250,
xtype: 'panel',
id: 'west-region',
layout: {
type: 'vbox',
align: 'stretch'
},
items: [{
xtype: 'locationslist',
flex: 1
},{
xtype: 'clientslist',
flex: 1
}]
}]
};
this.callParent();
}
});
Client.js:
Ext.define('GeoSniffer.model.client', {
extend: 'Ext.data.Model',
fields: [
'ip',
'packetsCount',
'firstPacketUsec',
'latestPacketUsec',
'location',
'sessionsArr',
'currentSession'
]
});
Location.js:
Ext.define('GeoSniffer.model.Location', {
extend: 'Ext.data.Model',
fields: [
'countryCode',
'countryName',
'region',
'city',
'postalCode',
'latitude',
'longitude',
'dma_code',
'area_code',
'metro_code',
'packetsCount',
'sessionsArr',
'currentSession',
'clients'
]
});
Clients.js:
Ext.define('GeoSniffer.store.Clients', {
extend: 'Ext.data.Store',
requires: 'GeoSniffer.model.Client',
model: 'GeoSniffer.model.Client',
autoLoad: false,
proxy: {
type: 'ajax',
url: 'data/clients.json',
reader: {
type: 'json',
root: 'clients_list'
}
}
});
Locations.js:
Ext.define('GeoSniffer.store.Locations', {
extend: 'Ext.data.Store',
requires: 'GeoSniffer.model.Location',
model: 'GeoSniffer.model.Location',
autoLoad: false,
proxy: {
type: 'ajax',
url: 'data/locations.json',
reader: {
type: 'json',
root: 'locations_list'
}
}
});
ClientsList.js:
Ext.define('GeoSbiffer.view.ClientsList', {
extend: 'Ext.grid.Panel',
alias: 'widget.clientslist',
store: 'Clients',
title: 'Clients',
hideHeaders: true,
initComponent: function() {
this.columns = [
{
dataIndex: 'ip',
},
{
dataIndex: 'packetsCount',
}
];
this.callParent();
}
});
LocationsList.js:
Ext.define('GeoSbiffer.view.LocationsList', {
extend: 'Ext.grid.Panel',
alias: 'widget.locationslist',
store: 'Locations',
title: 'Locations',
hideHeaders: true,
initComponent: function() {
this.columns = [{
dataIndex: 'countryName',
flex: 1
},{
dataIndex: 'city',
flex: 1
}
];
this.callParent();
}
});
clients.json
{
"sessions_arr": [ 7, 0, 6, 1, 6, 8, 2, 39, 0, 5, 12, 8],
"clients_list": [
{
"ip": "82.166.201.153",
"packetsCount": 1,
"firstPacketUsec": 211474,
"latestPacketUsec": 211474,
"location": {
"countryCode": "IL",
"countryName": "Israel",
"region": "unknown",
"city": "unknown",
"latitude": 31.5,
"longitude": 34.75,
"dma_code": 0,
"area_code": 0,
"metro_code": 0,
"packetsCount": 0,
"currentSession": 0,
"clients": []
},
"sessionsArr": [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"currentSession": 1
}
],
"status": {
"executionResult": "OK",
"isSnifferActive": false,
"servletInfo": ""
}
}
endroits.json
{
"sessions_arr": [ 7, 0, 6, 1, 6, 8, 2, 39, 0, 5, 12, 8],
"locations_list": [
{
"countryCode": "US",
"countryName": "United States",
"region": "CA",
"city": "Palo Alto",
"postalCode": "94304",
"latitude": 37.376205,
"longitude": -122.1826,
"dma_code": 807,
"area_code": 650,
"metro_code": 807,
"packetsCount": 2,
"sessionsArr": [ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"currentSession": 0,
"clients": [
{
"ip": "69.171.242.14",
"packetsCount": 2,
"firstPacketUsec": 368942,
"latestPacketUsec": 369060,
"sessionsArr": [ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"currentSession": 0
}
]
}
],
"status": {
"executionResult": "OK",
"isSnifferActive": false,
"servletInfo": ""
}
}
essayer de déboguer avec Firebug par la trace de la pile n'a donné aucune info utile.
Ce qui me manque??
La place le code ne fonctionne pas:
Pouvez-vous briser sur l'erreur, puis suivre la trace de la pile pour voir où
J'ai ajouté à ma question une capture d'écran de la pile d'appel et le saut de ligne...
Il tente d'instancier un Poste de la classe. Je pense que la réponse sera dans le
c
vient?J'ai ajouté à ma question une capture d'écran de la pile d'appel et le saut de ligne...
Il tente d'instancier un Poste de la classe. Je pense que la réponse sera dans le
alias
méthode, deux entrées vers le bas la trace de la pile. Il sera probablement essayer de résoudre certains xtype là, et qui va aider la prochaine étape dans le diagnostic.
OriginalL'auteur Hagay Myr | 2011-12-10
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation du chargeur, assurez-vous que vous êtes en cours d'exécution avec
ext-all-dev.js
(ouext-dev.js
) pas-debug
.-dev
fera rapport chargeur d'erreurs, mais-debug
ne sera pas. Ce type de problème est difficile à traquer que la demande augmente, mais les dev vont le signaler tout de suite (dans la console).J'ai seulement vu cette friandise mentionné une seule fois, mais il m'a sauvé jours de débogage.
Je ne vais pas éviter ce commentaire, certainement +1! Il est important de connaître cette différence, il permet d'économiser beaucoup de temps de débogage!
ah, j'ai téléchargé ExtJS 5, j'ai eu ext, ext-debug ext-rtl mais pas ext-dev ! ? une idée sur cette nouvelle version ?
Désolé, je n'ai pas utilisé EXT dans un moment maintenant. Je vais essayer, en utilisant toutes les différentes versions et voir si un rapport de l'erreur dans la console. Vous pouvez également consulter Sencha de docs pour voir s'ils ont fait quelque chose pour que ce problème soit plus facile à trouver.
OriginalL'auteur David Kanarek
Je reporoduced cette erreur et j'ai trouvé que
GeoSniffer.store.Clients
parce que vous avez une faute de frappe dans votreclient.js
fichier. Il estGeoSniffer.model.client
au lieu deGeoSniffer.model.Client
. Il est égalementGeoSbiffer
espace de noms utilisé dans *la Liste des fichiers.OriginalL'auteur Krzysztof