2015-08-03 57 views
-1

我特林寫節點js.The模塊一個js模塊很簡單:如何避免不確定的是不是一個函數

var sum=function(a,b){ 
    return a+b; 
} 

var product=function(a,b){ 
    return a*b; 
} 

exports.sum; 
exports.product; 

我呼籲這樣的模塊:

var op=require("./sumProduct"); 
console.log(op.sum(3,4)); 

而錯誤是拋出。任何人都可以幫助我?

+0

會發生什麼事,當你'的console.log(OP)'?你看到你的'sum'功能列出嗎? –

+4

嘗試'exports.sum = sum; exports.product = product;'? – fuyushimoya

+0

可以肯定的是,sumProduct文件沒有擴展名? – dam660

回答

1

記住這一行:module.exports = exports = {}

是什麼意思?那module.exports只是一個對象。

要確定它不是空的它包含了程序員需要導出的所有東西,避免覆蓋它的常見錯誤,或者在你的情況下,根本不寫它。

這是你的代碼的問題:

exports.sum;  // Nothing is actually happening 
exports.product; // in either of these lines. 

兩個exports.sumexports.product退出SUMPRODUCT模塊之後不確定。 module.exports對象沒有賦值。

你的代碼可以簡潔地固定如下:

方法1

exports.sum  = function (a, b) { 
    return a+b; 
} 

exports.product = function (a, b) { 
    return a*b; 
} 

或者,您也可以構建您的模塊中通過以下兩種方式:

方法2

module.exports = { 
    sum: function(a, b) { 
     return a+b; 
    }, 

    product: function(a, b) { 
     return a*b; 
    } 
}; 

方法3

var sum  = function (a, b) { 
    return a+b; 
} 

var product = function (a, b) { 
    return a*b; 
} 

exports.sum  = sum; 
exports.product = product; 
2

你已經這麼近了。相反,你的出口線路,用這個

module.exports = { 
    sum:sum, 
    product:product 
}; 
相關問題