2017-07-09 30 views
-1

我在編寫應用程序並遇到了一些麻煩。我在JavaScript中設置了一個「類」,並在該類中調用了多個this.demo = function(){}。當我導出模塊,然後導入另一個頁面,然後嘗試使用其中一個子功能時,我的應用程序告訴我它無法識別該功能。這裏是一個例子..我應該如何做到這一點?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'對象。你給它一個名爲'demo'的屬性,這是一個構造函數。 – 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(「你好」)調用子功能。 –