2017-11-20 6 views
0

私は自分のプロジェクトに別のファイルからコンストラクタを作成しようとしていますが、これは同じファイル内に宣言されている場合、 これは他のファイルのNodejsでコンストラクタを作成する

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*/

作品しかし、私は別のファイル

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'); 
 
}
にコンストラクタを取るしようとすると、あなたが実際に何を輸出していないので

これは、私に

TypeError: mod.docWeb is not a constructor 
+0

'。/ modulos/mod1.js'はどのように見えますか? –

+0

2番目のスニペットでは、mod1がどのように見えるかを見ることができます。/ * mod1 */comentの後 –

+1

なぜ他のファイルに移動するだけでなく、矢印構文にも変更しましたか? [矢印関数はコンストラクタではありません!](https://stackoverflow.com/q/34361379/1048572) 'function'キーワードを使用してください。 – Bergi

答えて

1
exports.docWeb = docWeb(); 

docWeb()戻りundefinedを投げます。

おそらく、関数自体をエクスポートしたいと思うでしょう。

+0

Nop、doasnt works ... –

1

あなたはこれを変更する必要があります。これに

exports.docWeb = docWeb(); 

exports.docWeb = docWeb; 

あなたはコンストラクタ関数自体ではなく、それを実行した結果をエクスポートします。あなたがしていたことは、コンストラクタを呼び出して戻り値をエクスポートすることでした。 Javascriptでは、()の後ろに、インタープリタに関数を今すぐ実行するように指示するシンボルの後に入力します。関数への参照だけを参照したい場合は、()を付けずに関数名を使用します。

+0

@eleazarortega - これはあなたの質問に答えましたか? – jfriend00

関連する問題