假设我有以下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/

10-11 06:55