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