[英]nodejs export function on require
我在某些ExpressJS路線上有以下代碼行:
var test = require('../app/test')('dev');
test.getData(); //this fails saying: typeError getData() is not a function
我的測試文件如下所示:
module.exports = function(env){
var mod = {
'field1': 'asd',
'field2': 'asd2'
};
mod.getData = function(){
return 'data';
};
return mod;
};
我究竟做錯了什么?
1 /
您可以定義filed1
並在調用時使用field1
==>鍵入錯誤
2 /
您需要編寫返回具有屬性getData
對象的包,該對象是另一個類似於以下內容的function
:
module.exports = function(env){
var mod = {
'filed1': 'asd',
'field2': 'asd2',
'getData' :function(){
return 'data';
}
};
return mod ;
};
require('../app/test')
返回function(env){ ....
require('../app/test')('dev')
調用function(env){....}('dev')
==>它返回function(env){....
的輸出。
此輸出應該是包含屬性getData
的對象( mod
),並且其值應該是能夠調用require('../app/test')('dev').getData()
的函數require('../app/test')('dev').getData()
test=function(env){ var mod = { 'filed1': 'asd', 'field2': 'asd2', 'getData' :function(){ return 'data'; } }; return mod ; }; console.log(`Can i call "test.getData()" ?` ) try{ test('dev').getData(); //!--- Call like this console.log('yes') }catch(e){ console.log('No : ',e) } console.log(`Can i call "test('dev').filed1" ? => `,test('dev').filed1 ==='asd' );
這是完整的源代碼。
test.js:
module.exports = function(env){
var mod = {
'filed1': 'asd',
'field2': 'asd2',
'somefunction' : function () {
return 'data';
}
};
return mod;
};
index.js
var test = require('../test');
test().somefunction();
問題是您正在嘗試訪問名為getData的對象的屬性。 getData已經定義為mod對象的屬性。 因此,如果要訪問它,則需要刪除括號。 test.getData就足夠了。 但是,getData被定義為一個函數。 同樣test.js被導出為函數。 因此,您將需要訪問test(),然后通過getData()在test()中調用該函數;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.