簡體   English   中英

如何避免未定義不是函數

[英]how avoid undefined is not a function

我正在為節點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));

錯誤被拋出。 有人可以幫助我嗎?

你太近了 代替您的出口線,使用這個

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM