【问题标题】:Dynamically updating exports Nodejs动态更新导出 Nodejs
【发布时间】:2017-12-21 19:59:58
【问题描述】:

我有这个对象正在被其他文件导出和导入。最初,该对象是空的,但在事件更改期间(单击按钮),该对象被键和值填充,但在导入它的文件中仍为空。如何动态更新一个对象,然后用它的新值导出它。

代码如下所示:

firstFile.js

const anObject = {};

function clicked() {

 anObject.firstName = "John";
 anObject.lastName = "Doe" ;

}

module.exports = anObject;

secondFile.js

const importedObject = require("./firstFile");

console.log(importedObject) // always returns an empty object

【问题讨论】:

  • 你是如何调用函数clicked的?
  • 不明白你的问题。函数 clicked() 被 html 中的元素使用。喜欢onClick="clicked()
  • @AlfMoh 如果您在带有 HTML 的浏览器中执行此操作,并且您没有使用 Node.js...
  • 这是一个电子应用程序
  • @AlfMoh 我会在您的问题中指定这一点,并添加您正在 HTML 中执行 onClick 的事实。

标签: javascript node.js electron


【解决方案1】:

您必须导出并调用clicked 函数。否则,您永远不会真正更新该对象。

例如。

firstFile.js

const anObject = {};

function clicked() {

 anObject.firstName = "John";
 anObject.lastName = "Doe" ;

}

module.exports = anObject;
module.exports.clicked = clicked;

secondFile.js

const importedObject = require("./firstFile");
console.log(importedObject.firstName) //undefined
importedObject.clicked()
console.log(importedObject.firstName) //John

编辑

在与 OP 进一步讨论后,这是一个 Electron 应用程序。上面的代码在 Node.js 中工作。 Electron 可能有不同的设置,需要额外的步骤才能完成这项工作。

【讨论】:

  • @AlfMoh 第一次应该 console.log undefined 然后在调用 clicked() 之后应该 console.log John。这不是正在发生的事情吗?
  • 不,我实际上设置了 5 秒的 setInterval 以查看是否会有更改,但它一直在记录“未定义”
  • @AlfMoh 我刚刚测试了这个。它完美地工作。根据您在问题中的评论,您似乎没有使用 Node.js。如果是这种情况,您的问题非常具有误导性。
  • @AlfMoh 如果你把 console.log 放在你点击的函数中会发生什么?它甚至被调用了吗?
  • 是的,它正在被调用。
猜你喜欢
  • 1970-01-01
  • 2016-03-03
  • 2022-01-23
  • 2023-02-01
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多