在循环依赖 NodeJS 中访问 module.exports 中不存在的 属性
Accessing non-existent property of module.exports inside circular dependency NodeJS
我在 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 };
Event.js
const main = require('../main')
main.Scan;
这个returns错误:
(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)
我做错了什么?
最好试试:
module.exports = Scan;
问题已解决,这是我的不同之处:
module.exports = { Scan };
在定义扫描函数之前声明,如下所示:
module.exports = { Scan };
function Scan(){
//Code
}
然后在event.js,我写了
const main = require('../main')
因为它现在是一个模块,可以与 require() 函数一起使用。
然后执行 event.js 中的函数,我写
main.Scan()
执行它。
我在 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 };
Event.js
const main = require('../main')
main.Scan;
这个returns错误:
(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)
我做错了什么?
最好试试:
module.exports = Scan;
问题已解决,这是我的不同之处:
module.exports = { Scan };
在定义扫描函数之前声明,如下所示:
module.exports = { Scan };
function Scan(){
//Code
}
然后在event.js,我写了
const main = require('../main')
因为它现在是一个模块,可以与 require() 函数一起使用。 然后执行 event.js 中的函数,我写
main.Scan()
执行它。