【问题标题】:What am I doing wrong in my module export from main.js?我在从 main.js 导出模块时做错了什么?
【发布时间】:2019-09-09 20:57:44
【问题描述】:

学习如何开发模块我正在尝试学习如何从 main.js 中导出一个模块。在我的 renderer 上,我可以正确地将其发送到 ma​​in

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


【解决方案1】:

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

【讨论】:

  • 那么在 main.js 中正确的重写是什么,以便我可以在 foobar.js 中调用 res.foo
  • 不可以改foobar吗?然后只需执行foobar.testing(res),因为您的导出不会按照当前编写的方式执行任何操作。
  • 欢迎提出更好的建议,但请解释原因,仍在学习中。
猜你喜欢
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 2021-11-23
相关资源
最近更新 更多