Javascript 从main.js导出模块时我做错了什么?
学习如何开发模块我试图学习如何从main.js导出一个模块。在我的渲染器上我可以通过以下方式将其正确发送到main: renderer.js: 在main.js中,我可以正确地获得以下信息:Javascript 从main.js导出模块时我做错了什么?,javascript,node.js,module-export,Javascript,Node.js,Module Export,学习如何开发模块我试图学习如何从main.js导出一个模块。在我的渲染器上我可以通过以下方式将其正确发送到main: renderer.js: 在main.js中,我可以正确地获得以下信息: ipcMain.on('channel', (e, res) => { console.log(JSON.stringify(res)) console.log(typeof res) }) 但是,当我从main.js导出结果,并尝试将其放入另一个文件时,我得到一个未定义的: main.js
ipcMain.on('channel', (e, res) => {
console.log(JSON.stringify(res))
console.log(typeof res)
})
但是,当我从main.js导出结果
,并尝试将其放入另一个文件时,我得到一个未定义的
:
main.js:
foobar.js:
最终结果:
Attempting console.log test: undefined
undefined
undefined
我还尝试在main.js中重新定义对象:
我对参考文献的研究:
结果
,以便在其他文件中使用时,我犯了什么错误
编辑:
我的最终目标是学习如何在foobar.js中调用
res.foo
。首先,您的测试
函数中有一个参数res
,它会隐藏导入。其次,导入的res
对象是从main
导出的所有内容,其中包括所需的res
,因此您应该打印res.res
,而不是整个对象
Foobar.js:
const res = require('./main')
module.exports = {
testing: function() {
console.log(`Attempting console.log test: ${res.res}`)
console.log(res.res)
console.log(JSON.stringify(res.res))
}
}
最后一个版本(您在其中重新分配
module.exports
)将不起作用,因为foobar
仍将具有原始导出,它是一个空对象。首先,您要从参数打印res
,在main.js中重新构造它的正确方法是什么?最好的方法是将res
作为参数传递给testing
,而不是使用导出,但是如果您特别想使用导出,您只需要从testing
声明中删除该参数。但是我不认为这会有帮助,因为require
语句将快照初始导出,因此您必须导出一个空对象并将res
放在那里。那么main.js中的正确重写是什么,以便我可以在foobar.js中调用res.foo
?您不允许更改foobar
?然后只需执行foobar.testing(res)
,因为您的导出不会以当前编写的方式执行任何操作。请随时提出更好的建议,但请解释原因,并继续学习。
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
ipcMain.on('channel', (e, res) => {
module.exports = {
foo: foo,
bar: bar,
}
console.log(`Testing object ${res.foo}`)
foobar.testing()
})
const res = require('./main')
module.exports = {
testing: function() {
console.log(`Attempting console.log test: ${res.res}`)
console.log(res.res)
console.log(JSON.stringify(res.res))
}
}