Чтобы ваш код мог использовать модули, написанные для nodejs, а также для ES6.
Существует разница между способами экспорта модулей в ES6 и CJS (общая спецификация JS).
Модули в 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;
}
СУП существовал до ES6. Узел по-прежнему использует версию CJS и все модули, изначально написанные для nodejs.
Хотя nodejs теперь экспериментально поддерживает модули ES6, если вы запускаете с - экспериментальный помечает и называет файлы модуля как .mjs.