2015-08-03 91 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 
};