0

学习如何开发模块我正在尝试学习如何从main.js导出一个。在我的渲染器上,我可以将其正确发送到main

渲染器.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)
})

但是,当我resultmain.js导出并尝试将其导入另一个文件时,我得到undefined

主.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()
})

foob​​ar.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.jsresult时做错了什么,所以我可以在不同的文件中使用它?

编辑:

我的最终目标是学习如何调用res.foofoobar.js 。

4

1 回答 1

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仍将具有原始导出,这是一个空对象。

于 2019-04-19T15:52:39.187 回答