JavaScript 从外部文件调用函数给出 .is not a function 错误,我该如何解决?

JavaScript calling function from external file gives .is not a fuction error, how can I fix this?

因此,当我使用此 require('fileName.js') 将外部 JavaScript 文件添加到我的主 index.js 文件时。

在index.js

const caltor = require('./calculate.js');

console.log(caltor.adding(5,7));

在我的calculate.js

function adding (i,y){
        return i+y;
}

顺便说一句,我正在使用nodejs来执行。

错误说:

console.log(caltor.adding(5,7));
                   ^
TypeError: caltor.adding is not a function

您需要在 'calculate.js' 文件中导出函数 'adding'。

module.exports = adding;

在您的 index.js 文件中,无需调用 caltor.adding()(假设您只从 'calculate.js' 导出一个函数)。

console.log(caltor(5,7));

Node.js 模块不会自动导出它们的 top-level 作用域 variables/functions.

要导出值,您有两种方法:

  • 将其添加到exports对象

    节点模块有一个预定义的变量exports,它的值被导出。将您的功能添加到其中:

    function adding (i,y){
      return i+y;
    }
    
    exports.adding = adding
    
    const caltor = require('./calculate.js');
    
    console.log(caltor.adding(5,7));
    

    您也可以通过这种方式导出多个值,只需确保为它们指定不同的名称即可:

    function adding (i,y){
      return i+y;
    }
    
    exports.adding = adding
    
    function subtracting (i,y){
      return i-y;
    }
    
    exports.subtracting = subtracting 
    
    const caltor = require('./calculate.js');
    
    console.log(caltor.adding(5,7));
      console.log(caltor.subtracting(5,7));
    
  • 通过分配给 module.exports

    提供“默认”导出

    如果要导出单个值,可以将其分配给module.exports。在这种情况下,它成为 require.

    返回的值

    请注意,在分配 module.exports 后,在 exports 变量上定义 属性 将不再有效。分配给 exports 变量也不会导出任何内容。

    function adding (i,y){
      return i+y;
    }
    
    module.exports = adding
    
    const adding = require('./calculate.js');
    
    console.log(adding(5,7));