从main.js导出模块时我出了什么问题?

时间:2019-04-19 15:43:27

标签: javascript node.js module-export

学习如何开发模块我正在尝试学习如何从 main.js 中导出模块。在我的渲染器上,我可以使用以下方式将其正确发送到 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

1 个答案:

答案 0 :(得分:1)

首先,您的res函数中有一个参数testing,它掩盖了导入。其次,导入的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仍将具有原始导出,这是一个空对象。