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

**URL:** <https://discourse.nodered.org/t/pourquoi-ma-fonction-est-elle-valide-sur-un-serveur-node-red-et-pas-sur-un-autre/88260>\
**Category:** General\
**Tags:** function-node\
**Created:** [25 May 2024 12:04 UTC](https://discourse.nodered.org/t/pourquoi-ma-fonction-est-elle-valide-sur-un-serveur-node-red-et-pas-sur-un-autre/88260 "2024-05-25T12:04:15Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jppouma](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jppouma/32/91371_2.png) [@jppouma](https://discourse.nodered.org/u/jppouma)\
**Post date:** [25 May 2024 12:04 UTC](https://discourse.nodered.org/t/pourquoi-ma-fonction-est-elle-valide-sur-un-serveur-node-red-et-pas-sur-un-autre/88260/1 "2024-05-25T12:04:15Z")

</div>

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 :

```auto
// 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

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [25 May 2024 12:11 UTC](https://discourse.nodered.org/t/pourquoi-ma-fonction-est-elle-valide-sur-un-serveur-node-red-et-pas-sur-un-autre/88260/2 "2024-05-25T12:11:54Z")

</div>

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

EDIT: you can improve with:

```js
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;

```

---

<div class="post-metadata">

**Author:** ![stefan24](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/stefan24/32/23075_2.png) [@stefan24](https://discourse.nodered.org/u/stefan24)\
**Post date:** [27 May 2024 05:18 UTC](https://discourse.nodered.org/t/pourquoi-ma-fonction-est-elle-valide-sur-un-serveur-node-red-et-pas-sur-un-autre/88260/3 "2024-05-27T05:18:05Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [26 July 2024 05:18 UTC](https://discourse.nodered.org/t/pourquoi-ma-fonction-est-elle-valide-sur-un-serveur-node-red-et-pas-sur-un-autre/88260/4 "2024-07-26T05:18:18Z")

</div>

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