Pourquoi ma fonction est elle valide sur un serveur Node-red et pas sur un autre?

Bonjour la communauté,
J'ai un script JS dans un bloc Fonction qui fonctionne très bien sur un serveur Node-red (NAS synology) mais qui n'est pas valide sur un autre serveur Node-Red (Cerbo GX de Victron energy).
Voici le script :

// Récupère le tableau d'objets depuis msg.payload
var inputArray = msg.payload;

// Initialiser un tableau pour stocker les valeurs
var valuesArray = [];

// Parcourir chaque objet dans le tableau
inputArray.forEach(function(item) {
    // Parcourir chaque clé de l'objet
    for (var key in item) {  
        // Ajouter la valeur associée à la clé numérique au tableau des valeurs
        valuesArray.push(item[key]);
    }
});

// Assigne les valeurs extraites à msg.payload
msg.payload = valuesArray;

// Renvoie le message modifié
return msg;

Sur le serveur Node-Red du Cerbo j'ai l'erreur : "TypeError: inputArray.forEach is not a function"
Je ne comprends pas pourquoi ?
Merci pour vos aides.
jppouma

Hi,
Are you sure msg.payload is an array?
You can check this with Array.isArray().

EDIT: you can improve with:

let inputArray = msg.payload;

// Pas sûr que ca résout l'affaire - possible que `forEach` n'existe pas
if (!Array.isArray(inputArray))
  inputArray = [inputArray];

msg.payload = inputArray.reduce((array, item) => array.concat(item), []);

return msg;
1 Like

You should also report, wbich Node-RED Version and nodejs Version you use on each of the Devices.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.