为什么我的节点单例中的数据不是我放在那里的?

Why is the data in my node singleton not what I placed there?

在 node 中,我需要将对象从一个文件传递到另一个文件,因此我尝试使用具有 setter 和 getter 的单例。我确信我已经使用相同的方法成功地完成了这项工作,但是当我去获取对象时,它不是它应该的样子。

完整代码如下:

module.exports.setLocals = (ref, data) => {
  let locals = {
    previousEntries: data.previousEntries ? data.previousEntries : {},
    errors: {},
    current: {},
    ref: ref
  };
  console.log(locals);
  return;
};

module.exports.getLocals = () => {
  console.log(locals);
  return locals;
};

我这样调用setLocals:

locals.setLocals(ref, req.reqId);

并且本地对象设置为 { previousEntries: {}, errors: {}, current: {}, ref: '2aa8d390' },这正是我所期待的。

然而,当我调用 getLocals 时,对本地人执行 console.log 给我垃圾。

谁能给我一两个指点?谢谢



您的范围界定有问题。 setLocals 中的 localsgetLocals 中的不同(由于 let)。

如果您在两个方法范围之外启动 locals,您将能够共享它。

const locals = {
  ... default values.
};

module.exports.setLocals = (ref, data) => {
  locals = {  // <---- remove let
    previousEntries: data.previousEntries ? data.previousEntries : {},
    errors: {},
    current: {},
    ref: ref
  }
  console.log(locals);
  return;
};

module.exports.getLocals = () => {
  console.log(locals);
  return locals;
};