Javascript 什么是互要求故障?

Javascript 什么是互要求故障?,javascript,ecmascript-6,export,Javascript,Ecmascript 6,Export,我看到了一种解释,即: _InteropRequiredFault():ES6 CommonJS模块按原样使用(如果它有默认导出,则它有一个名为default的属性)。正常人 CommonJS模块成为默认属性的值。换句话说 换句话说,在后一种情况下,模块的导出将成为默认值 出口 在代码中,通常会写入多个\u interrequiredefault 因此,如果我理解得很好,因为默认导出是作为一个整体实体导出的整个文件上的一组键/值,\u interopRequireDefault允许选择哪些模块将

我看到了一种解释,即:

_InteropRequiredFault():ES6 CommonJS模块按原样使用(如果它有默认导出,则它有一个名为default的属性)。正常人 CommonJS模块成为默认属性的值。换句话说 换句话说,在后一种情况下,模块的导出将成为默认值 出口

在代码中,通常会写入多个
\u interrequiredefault


因此,如果我理解得很好,因为默认导出是作为一个整体实体导出的整个文件上的一组键/值,
\u interopRequireDefault
允许选择哪些模块将输入它所需的特定代码的默认导出

允许您的代码使用为Node.js以及为ES6编写的模块

ES6和CJS(通用JS规范)中模块的工作方式存在差异

通用JS中的模块:

module.exports = function () {};
export default function () {}
ES6中的模块:

module.exports = function () {};
export default function () {}
\u InteroprequiredFault有一个相当简单的逻辑:

function _interopRequireDefault(module) {
  const
      isCJSModule = module && module.__esModule,
      cjsStyedModule = { default: module };

  return isCJSModule ? module: cjsStyedModule;
}
CJS在ES6之前就存在。Node.js仍然使用CJS版本和最初为Node.js编写的所有模块

尽管Node.js现在实验性地支持ES6模块,但如果您使用--experimental运行,则将模块文件标记并命名为
.mjs

注意:现在到2020年,如果您在
package.json
中添加一个字段
“type”:“module”
,Node.js还支持带有ES6模块的
.js文件。请在此处阅读更多信息: