5

これらの設定でwebpackを使用してlibを作成しています:

output: {
    path: path.join('build'),
    filename: 'my_lib.js',
    library: 'MyLib',
    libraryTarget: 'umd'
  },

マイライブラリ:

export default function() {
  console.log('MyLib');
}

問題は、build/my_lib.js をブラウザーにロードしようとすると、MyLib にアクセスする唯一の方法は MyLib.default を使用することです...

何か案が?

4

3 に答える 3

3

理由について何か考えている場合は?

Babel を使用して ES6 機能を有効にしている場合、おそらく Babel5 と Babel6 の間の変更の 1 つに直面しています。

Babel5 を使用すると、コードは次のようにトランスパイルされます。

'use strict';

Object.defineProperty(exports, '__esModule', {
  value: true
});

exports['default'] = function () {
  console.log('MyLib');
};

module.exports = exports['default'];

しかし、Babel6 を使用すると、次のようになります。

'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

exports.default = function () {
  console.log('MyLib');
};

違いがわかりますか?

module.exports = exports['default'];

この行はBabel6で削除されました。ここで次のことが決まりました。

デフォルトを常にエクスポートするにはexports.default

それを回避するためのアイデアについて尋ねている場合は?

この行を自分で追加するか、それを追加する何らかの種類のバベル プラグインを使用できます

const myLib = function () {
  console.log('MyLib');
};

export default myLib;

module.exports = myLib;
于 2016-01-13T22:36:18.147 に答える