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));
因此,当我使用此 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));