J'ai un fichier à exporter 'item-state-manager.js':

module.exports.aggregate_states = function (member_states) {
    console.log(member_states);
 }

Un autre fichier doit importer ce module et utiliser la fonction 'aggregate_states':

var aggregate_states = require("./item-state-manager.js")

module.exports.saveItem = function () {
 var aggregate = aggregate_states("state");
}

Mais je reçois une erreur:

TypeError: aggregate_states is not a function

Est-ce que j'importe mal 'item-state-manager.js'?

4
Serhiy 25 janv. 2017 à 13:44

4 réponses

Meilleure réponse

Comme je le sais, require renvoie l'objet module.exports.

Si aggregate_states est votre seule fonction que vous souhaitez exporter, utilisez-la.

module.exports = function (member_states) {
    console.log(member_states);
}

Sinon, importez-le comme ceci.

var aggregate_states = require("./item-state-manager.js").aggregate_states;
6
skAstro 25 janv. 2017 à 10:48

Vous n'importez pas correctement le module. Soit importer directement la fonction en utilisant

var aggregate_states = require("./item-state-manager.js").aggregate_states;

Ou importez le module et appelez la fonction

var stateManager = require("./item-state-manager.js");
// And use it like this
stateManager.aggregate_states(/*...*/)

Si vous utilisez une version à jour de node, vous pouvez également faire

const { aggregate_states } = require("./item-state-manager.js");
1
ThomasThiebaud 25 janv. 2017 à 10:48

Essaye ça:

var aggregate_states = require("./item-state-manager.js").aggregate_states;

module.exports.saveItem = function () {
 var aggregate = aggregate_states("state");
}

aggregate_states est juste une propriété de l'ensemble du module retourné, lorsque vous avez besoin d'obtenir le module entier qui est un Object qui ressemble à ceci:

{
    aggregate_states: function() {...}
}
0
XCS 25 janv. 2017 à 10:47

------ AU FICHIER D'EXPORTATION

Déclarez la fonction que vous souhaitez exporter normalement ... function aggregate_state (member_states)

À la fin de ce fichier .js, ajoutez ... module.exports = {aggregate_state: aggregate_state,}

------ AU DOSSIER D'IMPORTATION

Importez le fichier de votre choix ... const aggregate_states = require ("./ item-state-manager.js");

Appelez-le ... item-state-manager.aggregate_state (member_states);

-1
Sebastian Juarez 5 mars 2020 à 17:50