2017-08-16 2 views
3

J'essaie de comprendre une erreur JS que je reçois dans une extension e-commerce Magento pour laquelle j'ai payé beaucoup d'argent, mais le soutien a été manquant de leur part pour résoudre ce problème . Erreur provoque une roue tournante de malheur sur le chargement de la page qui ne disparaît jamais.Uncaught TypeError: data.some n'est pas une fonction

Ce qui suit est l'erreur je reçois dans la console de développeur:

Uncaught TypeError: data.some is not a function 
at findFirst (select.js:67) 
at UiClass.normalizeData (select.js:193) 
at UiClass.normalizeData (wrapper.js:109) 
at UiClass.getInitialValue (abstract.js:200) 
at UiClass.setInitialValue (abstract.js:143) 
at UiClass._super (wrapper.js:106) 
at UiClass.setInitialValue (select.js:302) 
at UiClass.setInitialValue (wrapper.js:109) 
at UiClass.initialize (abstract.js:70) 
at UiClass.initialize (wrapper.js:109) 

Ceci est la section de code à la ligne 67 de select.js data.some (function (noeud) { l'erreur fait référence :

/** 
* Recursively loops over data to find non-undefined, non-array value 
* 
* @param {Array} data 
* @return {*} - first non-undefined value in array 
*/ 
function findFirst(data) { 
    var value; 

    data.some(function (node) { 
     value = node.value; 

     if (Array.isArray(value)) { 
      value = findFirst(value); 
     } 

     return !_.isUndefined(value); 
    }); 

    return value; 
} 

J'espère que cela est juste une sorte d'erreur typo que je pourrais être en mesure de fixer sur mon

Merci à? avancer pour toute aide.

P.S. Je suis un novice en codage.

+0

'some' est une méthode d'objets de tableau. Soit 'data' n'est pas un tableau ou vous avez écrasé la méthode' some' d'origine. – undefined

+0

Presque certainement pas une faute de frappe. Cela se produit lorsque la fonction 'findFirst' est passée à une valeur qui n'a pas de méthode' some'. Vraisemblablement, il attend un tableau. –

+0

Vérifiez le code où vous appelez la fonction findFirst et assurez-vous que vous transmettez la valeur du paramètre data dans array. – Ram

Répondre

1

Dans Magento 2.1.8, il y avait une méthode supprimée qui pouvait affecter certaines extensions - elle affectait la nôtre appelée getOptionArray().

Pour résoudre ce problème dans notre extension: Ui/DataProvider/Produit/Forme/Modificateur/FixedSelectionType.php

'options' => FixedType::getOptionArray(), 

devient:

'options' => FixedType::getOptionsArray(), 

et dans le dossier de modèle/attribut add this méthode, dans notre cas le chemin complet est: Model/Attribute/Sources/FixedType.php

et au-dessus de la fonction publique getalloptions() méthode ajouter ceci:

public static function getOptionsArray() 
{ 
    $result = []; 

    foreach (self::getOptionArray() as $index => $value) { 
     $result[] = ['value' => $index, 'label' => $value]; 
    } 

    return $result; 
}