それは、次の2行は等価であることmy understanding次のとおりです。私の「インポート」ステートメントが正しく翻訳されていませんか?
const Up = require('write-up').default
そして...
import Up from 'write-up'
両方の例はUp
として利用可能write-up
モジュールのデフォルトのエクスポートを行う必要があります。
残念ながら、BabelとWebpackを使用すると、これは私が見ている動作ではありません。
最初の例は正常に動作します。これは、この行を生成します。
var Up = __webpack_require__(5).default;
Up
は私が期待する動作ですwrite-up
モジュールのデフォルトのエクスポートに設定されています。
は、ではありません。それは、これを生成する:
var _writeUp = __webpack_require__(5);
var _writeUp2 = _interopRequireDefault(_writeUp);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
代わりにデフォルトのエクスポートにUp
を設定する、Up
は(default
フィールドを含む)write-up
モジュールのすべての単一の輸出を含むオブジェクトに設定されています。
私は間違っていますか?
ここに私のWebPACKの設定から関連する部分があります:
{
test: /.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
}
'import up 'write-up';'常に '.default'を読み込むわけではありませんが、' write-up'がBabelでコンパイルされた場合にのみ '.default'が読み込まれます。それがCommonJSモジュールの場合、 'Up'は' module.exports'オブジェクト全体になります。 – loganfsmyth
あなたの書き込みモジュールは '__esModule'プロパティを持っていますか(それともES6モジュール自体ですか)? – Bergi
2番目の例では、 'Up'はまったく設定されていませんか?コード全体を表示してください。 ES6からの 'Up'への参照は、ES5コードで' _writeUp2.default'に変換されることに注意してください。 – Bergi