假设我有以下2个JavaScript文件:
1)文件1:
const { fun2 } = require('./file2');
console.log(fun2());
exports.fun1 = () => {
return 'abc';
};
2)文件2:
const { fun1 } = require('./file1');
console.log(fun1());
exports.fun2 = () => {
return 'xyz';
};
如果运行file1,则会出现以下错误:
TypeError: fun1 is not a function
如果运行file2,则会出现以下错误:
TypeError: fun2 is not a function
从同一文件导入和导出到什么问题?有解决方案吗?我正在使用NodeJS
最佳答案
发生这种情况的原因是因为fun2是一个看起来像这样的对象:
{
fun2: function(){
return "xyz";
};
}
当您将内容从file2导入到file1时,您不仅在导入fun2函数。您导入其中具有
fun2
函数的对象。可能的解决方案
有很多不同的方法可以解决此问题
呼叫
fun2.fun2()
中的file1
做这样的事情
console.log(fun2.fun2());
仅需要
fun2
函数。当您需要该模块时,只需使用该模块中的
fun2
函数即可。const { fun2 } = require('./file2').fun2;
仅导出
fun2
中的file2
函数代替执行
exports.fun2 = (insert function here)
,而是执行module.exports = (insert function here)
。这将仅导出fun2
函数,因此当您执行require('./file1')
时,它将为您提供function
。关于javascript - 为什么从相同的javascript文件导入和导出会导致类型错误而不是函数错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59706338/