2017-11-20 2 views
0

Ich versuche yo einen Konstruktor aus einer anderen Datei zu meinem Projekt zu erstellen, die Sache ist, wenn Sie meine js nur den Konstruktor erkennen, wenn in der gleichen Datei deklariert ist, so ... This WorksErstellen Konstruktoren in Nodejs in anderen Datei

function docWeb(){ 
 
\t this.index = fs.readFileSync('./shalimar/index.html'); 
 
\t this.userLogin = fs.readFileSync('./shalimar/home-shalimar-user.html'); 
 
\t this.galery = fs.readFileSync('./shalimar/galeria.html'); 
 
\t this.basket = fs.readFileSync('./shalimar/carrito.html'); 
 
\t this.sells = fs.readFileSync('./shalimar/facturacion.html'); 
 
\t this.upload = fs.readFileSync('./shalimar/upload.html'); 
 
} 
 

 
var pagina = new docWeb(); 
 
\t res.writeHead(200, { 'Content-Type': 'text/html' }); 
 
\t res.write(pagina.userLogin); 
 
\t res.end(); 
 
\t return; 
 
    
 
    /*This Works*/

Aber wenn ich versuche, den Konstruktor auf eine andere Datei

var mod= \t \t \t require('./modulos/mod1'); 
 

 
var pagina = new mod.docWeb(); 
 
\t res.writeHead(200, { 'Content-Type': 'text/html' }); 
 
\t res.write(pagina.userLogin); 
 
\t res.end(); 
 
\t return; 
 
    
 
    
 
    /*mod1*/ 
 
    
 
    var fs = \t \t \t require('fs'); 
 

 
exports.docWeb =() =>{ 
 
this.index = \t \t fs.readFileSync('./shalimar/index.html'); 
 
this.userLogin = \t fs.readFileSync('./shalimar/home-shalimar-user.html'); 
 
this.galery = \t \t fs.readFileSync('./shalimar/galeria.html'); 
 
this.basket = \t \t fs.readFileSync('./shalimar/carrito.html'); 
 
this.sells = \t \t fs.readFileSync('./shalimar/facturacion.html'); 
 
this.upload = \t \t fs.readFileSync('./shalimar/upload.html'); 
 
}
zu nehmen Diese

werfen mich

TypeError: mod.docWeb is not a constructor 
+0

Wie sieht './Modulos/mod1.js' aus? –

+0

im zweiten snipet können Sie sehen, wie mod1 aussieht ... Nach/* mod1 */coment –

+1

Warum haben Sie es nicht nur in die andere Datei verschoben, sondern auch in die Pfeilsyntax geändert? [Pfeilfunktionen sind keine Konstruktoren!] (Https://stackoverflow.com/q/34361379/1048572) Verwenden Sie das Schlüsselwort 'function'. – Bergi

Antwort

1
exports.docWeb = docWeb(); 

docWeb() kehrt undefined, so dass Sie haben nicht wirklich etwas exportiert.

Wahrscheinlich möchten Sie die Funktion selbst exportieren.

+0

Nop, doasnt funktioniert ... –

1

Sie müssen dies ändern:

exports.docWeb = docWeb(); 

dazu:

exports.docWeb = docWeb; 

Sie wollen die Konstruktorfunktion selbst, nicht das Ergebnis der Ausführung es exportieren. Sie haben den Konstruktor aufgerufen und den Rückgabewert exportiert. In Javascript, wenn Sie () nach einem Symbol setzen, das den Interpreter anweist, die Funktion sofort auszuführen. Wenn Sie nur auf einen Verweis auf die Funktion verweisen möchten, verwenden Sie den Funktionsnamen ohne ().

+0

@eleazarortega - Hat Ihre Frage geantwortet? – jfriend00