私は Webpackチュートリアル を通して作業してきました。セクションの1つで、この質問の1行の本質を含むコード例を示します。
_export default class Button { /* class code here */ }
_
上記のチュートリアルの「コード分割」というタイトルの次のセクションでは、上で定義したクラスが次のようにオンデマンドでロードされます。
_require.ensure([], () => {
const Button = require("./Components/Button");
const button = new Button("google.com");
// ...
});
_
残念ながら、このコードは例外をスローします。
_Uncaught TypeError: Button is not a function
_
今、私はES6モジュールを含めるright方法は単にファイルの先頭で_import Button from './Components/Button';
_にすることであることを知っていますが、ファイルはbabelを悲しいパンダにします:
_SyntaxError: index.js: 'import' and 'export' may only appear at the top level
_
上記の(require.ensure()
)の例をいじってみたところ、ES6の_export default
_構文は、私のコードを含むdefault
というプロパティを持つオブジェクト(Button
function)。
次のように、require呼び出しの後に_.default
_を追加して、壊れたコード例を修正しました。
_const Button = require("./Components/Button").default;
_
...しかし、それは少し不格好に見え、エラーが発生しやすいと思います(ES6構文を使用するモジュールと、古き良き_module.exports
_を使用するモジュールを知っておく必要があります)。
CommonJS構文を使用するコードからES6コードをインポートする正しい方法は何ですか?
_export default
_をBabelで使用するには、次のいずれかを実行します。
require("myStuff").default
npm install babel-plugin-add-module-exports --save-dev
_または3:
_//myStuff.js
var thingToExport = {};
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = thingToExport;
_