如何更改module.exports进行导入和导出?

时间:2018-11-23 03:26:09

标签: javascript node.js ecmascript-6 import export

module.exports = function (idx) {
   this.camera = idx;
};

module.exports.CONFIG = function () {
  return Promise.resolve([]);
 };
module.exports.CONFIG.FLOOR = function () {
  return Promise.resolve([]);
}

我有一个包含上述代码的文件。 我需要此文件并console.log它。它只显示

function (idx) {
   this.camera = idx;
}

为什么其他属性被隐藏?

如果我删除第一个module.exports段并进行console.log记录,它将在CONFIG中显示一个匿名函数(或默认函数?)。

{ CONFIG:
  { [Function]
    FLOOR: [FUNCTION]
   }
}

我想知道如何将其更改为导入/导出类型,而不是module.exports / require?

谢谢!

1 个答案:

答案 0 :(得分:2)

您似乎同时具有命名出口默认出口。导出时,外观类似于:

// Default export:
export default function (idx) {
  this.camera = idx;
};
function CONFIG() {
  return Promise.resolve([]);
}
CONFIG.FLOOR = function () {
  return Promise.resolve([]);
}
// Named export:
export CONFIG;

然后,在导入它们时,您需要同时导入默认名称和名称:

import idxFn, { CONFIG } from '../foo';
      ^^^^^ default import
               ^^^^^^ named import

然后您就可以通过引用FLOOR来访问CONFIG.FLOOR

但是,请注意,具有另一个功能的属性的功能真的很奇怪。您可能考虑将FLOOR导出为另一个命名的导出,就像CONFIG

// Default export:
export default function (idx) {
  this.camera = idx;
};
// Named exports:
export function CONFIG() {
  return Promise.resolve([]);
}
export function FLOOR () {
  return Promise.resolve([]);
}