432 Stimmen

Mehrere module.exports in Node.js deklarieren

Was ich versuche zu erreichen, ist es, ein Modul zu erstellen, das mehrere Funktionen darin enthält.

module.js:

module.exports = function(firstParam) { console.log("Du hast es geschafft"); },
module.exports = function(secondParam) { console.log("Ja, du hast es geschafft"); }, 
// Hier können mehr Funktionen enthalten sein

main.js:

var foo = require('module.js')(firstParam);
var bar = require('module.js')(secondParam);

Das Problem, das ich habe, ist, dass firstParam ein Objekttyp ist und secondParam ein URL-String ist, aber wenn ich das habe, beschwert es sich immer, dass der Typ falsch ist.

Wie kann ich in diesem Fall mehrere module.exports deklarieren?

12voto

Jon Sakas Punkte 1621

Wenn die Dateien unter Verwendung von ES6-Export geschrieben sind, können Sie Folgendes schreiben:

module.exports = {
  ...require('./foo'),
  ...require('./bar'),
};

11voto

Jesse Teixeira Punkte 131

Ein Möglichkeit, dies zu tun, besteht darin, ein neues Objekt im Modul zu erstellen, anstatt es zu ersetzen.

Zum Beispiel:

var testOne = function () {
    console.log('test one');
};
var testTwo = function () {
    console.log('test two');
};
module.exports.testOne = testOne;
module.exports.testTwo = testTwo;

und um aufzurufen

var test = require('Pfad_zu_Datei').testOne;
testOne();

7voto

icktoofay Punkte 121675

Sie können eine Funktion schreiben, die manuell zwischen den anderen Funktionen delegiert:

module.exports = function(arg) {
    if(arg instanceof String) {
         return doStringThing.apply(this, arguments);
    }else{
         return doObjectThing.apply(this, arguments);
    }
};

7voto

Achintha Isuru Punkte 1846

Es gibt mehrere Möglichkeiten, dies zu tun, eine Möglichkeit wird unten erwähnt. Nehmen wir einfach an, Sie haben eine .js-Datei wie diese.

let add = function (a, b) {
   console.log(a + b);
};

let sub = function (a, b) {
   console.log(a - b);
};

Sie können diese Funktionen mit dem folgenden Code-Schnipsel exportieren,

 module.exports.add = add;
 module.exports.sub = sub;

Und Sie können die exportierten Funktionen mit diesem Code-Schnipsel verwenden,

var add = require('./counter').add;
var sub = require('./counter').sub;

add(1,2);
sub(1,2);

Ich weiß, dass dies eine späte Antwort ist, aber ich hoffe, das hilft!

5voto

Basavaraj SK Punkte 59

Sie können wie ich unten... für sowohl Funktionen als auch Pfeilfunktionen verwenden :

greet.js :

function greetFromGreet() {
  console.log("hello from greet module...");
}

const greetVar = () => {
  console.log("greet var as a arrow fn/...");
};

module.exports = { greetVar, greetFromGreet }; // ---- multiple module export...

// -----------------------------------------------

app.js :

const greetFromGreets = require("./greet");

greetFromGreets.greetFromGreet();
greetFromGreets.greetVar();

// -----------------------------------------------

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X