1. ホーム
  2. ecmascript-6

[解決済み】Babel 6がデフォルトのエクスポート方法を変更しました。

2022-04-11 19:50:14

質問

以前は、バベルは以下の行を追加していました。 module.exports = exports["default"] . このようなことはしなくなりました。これが意味するところは、以前は

var foo = require('./foo');
// use foo

今度はこれをやらなければならない。

var foo = require('./foo').default;
// use foo

大したことではありません(最初からこうあるべきだったのでしょう)。 問題は、以前の動作方法に依存していたコードがたくさんあることです(そのほとんどをES6インポートに変換することはできますが、すべてではありません)。私のプロジェクトを調べてこれを修正することなく、古い方法を動作させる方法についてのヒントをどなたか教えてください(あるいは、これを行うためのcodemodの書き方についての説明もあると、かなりスマートです)。

ありがとうございます。

入力します。

const foo = {}
export default foo

Babel 5での出力

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];

Babel 6 (とes2015プラグイン)で出力。

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;

出力で唯一違うのは module.exports = exports["default"] .


編集

私が具体的な問題を解決した後に書いたこのブログポストに興味があるかもしれません。 ES6モジュールの誤解、Babelのアップグレード、涙、そして解決策

解決するには?

を使用することもできます。 このプラグイン を使用すると、古い export の動作を元に戻すことができます。