1. ホーム
  2. javascript

[解決済み] INTEROPRequireDefaultとは何ですか?

2022-03-04 11:35:35

質問

の説明を見たことがあります。 このサイト ということです。

<ブロッククオート

_interopRequireDefault()。ES6 CommonJS モジュールは、そのまま使用されます (デフォルトのエクスポートがある場合は、default という名前のプロパティがあります)。通常の CommonJSモジュールは、プロパティdefaultの値となる。つまり つまり、後者の場合、モジュールのエクスポートがデフォルトの をエクスポートします。

コードでは、しばしば複数の _interopRequireDefault で書かれている。

つまり、デフォルトのエクスポートでは、ファイル全体のキー/バリューの束が総体としてエクスポートされるので、よく理解すれば、そのようなことはありません。 _interopRequireDefault は、特定のコードのデフォルトエクスポートに入るモジュールを選択することができます。

解決方法は?

Node.jsとES6用に書かれたモジュールを、あなたのコードで消費できるようにする。

ES6とCJS(Common JS specification)では、モジュールのエクスポートの仕方に違いがあります。

Common JS におけるモジュール :

module.exports = function () {};

ES6におけるモジュール :

export default function () {}

_interopRequireDefault は、かなり単純なロジックです。

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モジュールをサポートしていますが、もしあなたが --実験的 フラグを立て、モジュールファイルの名前を .mjs .

注:2020年現在、Node.jsは以下の機能もサポートしています。 .js というフィールドを追加すれば、ES6モジュールで "type": "module"package.json . 詳しくはこちら: https://medium.com/@nodejs/announcing-core-node-js-support-for-ecmascript-modules-c5d6dc29b663