如何避免未定义不是一个函数

how avoid undefined is not a function

本文关键字:一个 函数 何避免 未定义      更新时间:2023-09-26

我试图为节点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));

错误是throw。有人能帮我吗?

你差一点就成功了。使用

来代替导出行。
module.exports = {
   sum:sum,
   product:product
};

记住这一行: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;