【发布时间】:2019-09-09 20:57:44
【问题描述】:
学习如何开发模块我正在尝试学习如何从 main.js 中导出一个模块。在我的 renderer 上,我可以正确地将其发送到 main:
renderer.js:
let _object = {
foo: foo1,
bar: bar1,
}
ipcRenderer.send('channel', _object)
在 main.js 我可以正确理解:
ipcMain.on('channel', (e, res) => {
console.log(JSON.stringify(res))
console.log(typeof res)
})
但是,当我从 main.js 导出 result 并尝试将其放入另一个文件时,我得到一个 undefined:
main.js:
const foobar = require('./foobar')
ipcMain.on('channel', (e, res) => {
console.log(JSON.stringify(res))
console.log(typeof res)
module.exports.res = res
foobar.testing()
})
foobar.js:
const res = require('./main')
module.exports = {
testing: function(res) {
console.log(`Attempting console.log test: ${res}`)
console.log(res)
console.log(JSON.stringify(res))
}
}
最终结果:
Attempting console.log test: undefined
undefined
undefined
我也尝试过重新定义 main.js 中的对象:
ipcMain.on('channel', (e, res) => {
module.exports = {
foo: foo,
bar: bar,
}
console.log(`Testing object ${res.foo}`)
foobar.testing()
})
我的研究参考:
我在 main.js 中导出 result 时做错了什么,所以我可以在不同的文件中使用它?
编辑:
我的最终目标是学习如何在 foobar.js 中调用 res.foo。
【问题讨论】:
-
首先,您正在从参数中打印
res,这是未定义的,并且会影响导入的变量。 -
那么在 main.js 中重构它的正确方法是什么?
-
最好的方法是将
res作为参数传递给testing而不是使用导出,但如果您特别想使用导出,您只需从@987654336 中删除参数@ 宣言。但是我认为这不会有帮助,因为require语句会快照初始导出,因此您必须导出一个空对象并将res放在那里。
标签: javascript node.js module-export