首页 > 解决方案 > 从另一个文件导入时方法未定义

问题描述

当我尝试从另一个文件导入方法时,我变得不确定。我有 3 个文件,一个调用下一​​个。

文件1:

const { methodFromFile2 } = require('./file2');
methodFromFile2('myParam');

文件2:

const { methodFromFile3 } = require("../file3");

consoele.log(methodFromFile3); // undefined
function methodFromFile2(coolParam) {
    consoele.log(methodFromFile3); // undefined
}

module.exports = { methodFromFile2 };

文件 3

function methodFromFile3(coolParam) {
    ...
}

module.exports = { methodFromFile3 };

在 file2 中,该方法methodFromFile3始终未定义。但是,当我将所需的语句移到内部methodFromFile2时,它就起作用了。为什么会这样,这是正确的做法吗?

标签: javascriptnode.jsnode-modules

解决方案


如果require()您没有向我们展示其他语句,那么这可能是由require()A 需要 B 和 B 需要 A 的循环引起的。当您这样做时,其中一个需要最终会得到一个空的模块对象,而不是一个模块打算返回。


推荐阅读