如何避免undefined不是一个函数

时间:2015-08-03 09:45:20

标签: javascript node.js

我要为节点js写一个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));

错误就是抛出。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:2)

你这么近。而不是您的出口行,请使用此

module.exports = {
   sum:sum,
   product:product
};

答案 1 :(得分:1)

请记住以下一行:module.exports = exports = {}

这是什么意思? module.exports只是一个对象。

确保它不是空它包含程序员需要导出的所有内容,避免重写它的常见错误,或者在你的情况下,根本不写入它。< / p>

这是代码中的问题:

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

退出sumProduct模块后,exports.sumexports.product都未定义。没有为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;