2

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

主.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 };

事件.js

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

main.Scan;

这将返回错误:

(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)

我究竟做错了什么?

4

2 回答 2

3

问题解决了,这是我做的不同:

module.exports = { Scan };

在定义 Scan 函数之前声明,如下所示:

module.exports = { Scan };
function Scan(){
//Code
}

然后在 event.js 中,我写了

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

因为它现在是一个模块,并且可以与 require() 函数一起使用。然后在 event.js 中执行函数,我写

main.Scan()

执行它。

于 2021-07-23T14:26:53.127 回答
1

更好的尝试:

module.exports = Scan;

于 2021-05-12T13:02:08.290 回答