在循环依赖 NodeJS 中访问 module.exports 不存在的属性

gjo*_*joe 4 javascript function node.js module.exports

我在 NodeJS 中使用 module.exports 时遇到了一些问题,并且我遵循了多个指南,并且我几乎可以肯定我做得正确。我必须脚本、main.js 和 event.js。我试图将 main.js 的函数共享到 event.js,但它不起作用。这是代码:

Main.js

function Scan(){
    if(fs.readdirSync('./events/').length === 0){
        console.log(colors.yellow('Events Folder Empty, Skipping Scan'))
    } else {
        var events = fs.readdirSync('./events/').filter(file => file.endsWith('.json'))
                for(const file of events){
                    let rawdata = fs.readFileSync('./events/' + file);
                    let cJSON = JSON.parse(rawdata);
                }
                events.sort()
                tevent = events[0]
                StartAlerter()
                }
}

module.exports = { Scan };
Run Code Online (Sandbox Code Playgroud)

事件.js

const main = require('../main')

main.Scan;
Run Code Online (Sandbox Code Playgroud)

这会返回错误:

(node:19292) Warning: Accessing non-existent property 'Scan' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

小智 7

我发现这种安排对错误没有任何影响。

我只是改变了从 Main.js 导出函数的方式

从:

module.exports = { Scan };
Run Code Online (Sandbox Code Playgroud)

到:

exports.Scan = Scan
Run Code Online (Sandbox Code Playgroud)

在 Event.js 中,我能够像这样访问该文件

const main = require("./Main.js");
let result = main.Scan();
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题,我希望它可以帮助其他开发人员