2017-07-09 18 views
-1

私はアプリケーションを作成していて、少し問題に遭遇しました。私はJavaScriptで "クラス"をセットアップし、そのクラス内で複数のthis.demo = function(){}を呼び出します。モジュールをエクスポートしてから別のページにインポートし、サブ関数の1つを使用しようとすると、アプリケーションがその関数を認識しないことを通知します。ここに例があります..私はこれをどうすればいいのですか?Node.jsサブ関数を使用してモジュールをインポートおよびエクスポートする方法

function demo(){ this.test = function(msg){console.log(msg);} } 
module.exports.demo = demo; 

はその後、別のクラスの内部で私はdemo.jsファイル

function newClass(){ 
    this.demo = require('./demo'); 
    this.demo.test('Hello'); 
} 

をインポートエディタは、それがテストを認識していないことを私に語った...

+0

'「(必要に./demo ') 'は、' demo.js'から 'module.exports'オブジェクトを返します。デモと呼ばれる1つのプロパティをコンストラクタ関数として与えました。 – Ryan

答えて

1

あなたの輸出のエラーがありますコード。

function demo(){ this.test = function(msg){console.log(msg);} } 
module.exports.test = demo; 

今、あなたはそれを正しく呼び出すことができます。

function newClass(){ 

    this.demo = require('./demo'); 
    this.demo.test('Hello'); 

    // If you're still confused, use the console.log! 
    console.log(this.demo); 

} 

console.log(this.demo)の出力は、構造や、あなたのデモファイルを表示します。


編集:require呼び出しの結果としての機能を取得するには、このような輸出:

module.exports = function demo(){ this.test = function(msg){console.log(msg);} } 

今、あなたは直接呼び出す:

function newClass(){ 

    this.demo = require('./demo'); 
    this.demo.test('Hello'); 

} 
+0

すぐに応答していただきありがとうございます。私の質問を言い換えると、this.demo.testを呼び出すことができますか?this.demoだけを呼び出すことはできますか? –

+0

私は、関数自体がモジュールのルートとしてエクスポートされている例で答えを更新しました。それがあなたの問題を解決することを願っています。 –

+0

投稿した内容は関数のデモに文字列を送信しますが、this.test関数に到達しないため、出力はありません。あなたが気付いたことから..私はエクスポートしている関数と同じエクスポート名を使用できません。あなたが説明できなかったことは、エクスポートが正しくなると、this.demo.test( "Hello")を使ってサブ関数を呼び出すことができるということです。 –

関連する問題