TypeScript + React + Webpack2
セットアップ内でAnt Designコンポーネントをテストしようとしています。TypeScriptインポートとWebpack2でDatePickerを使用
私はDatePicker
コンポーネントを手動でインポートしています。そのため、webpackはそれを取得してバンドルに組み込むことができます。
import * as React from "react";
import * as moment from "moment";
import DatePicker from 'antd/lib/date-picker';
import "antd/lib/date-picker/style/css";
export default class TestComponent extends React.Component<any, any> {
render(): JSX.Element {
return <DatePicker value={moment(new Date())} format={"YYYY.mm.dd."}/>;
}
}
しかし、私は、ブラウザでコンパイルされたコードを実行しようとすると、特定のインポートは、この最終的なコードにコンパイルすると、コンポーネントは、表示されません。
Object.defineProperty(exports, "__esModule", { value: true });
var React = __webpack_require__(4);
var moment = __webpack_require__(0);
var date_picker_1 = __webpack_require__(287);
__webpack_require__(289);
var TestComponent = (function (_super) {
__extends(TestComponent, _super);
function TestComponent() {
return _super !== null && _super.apply(this, arguments) || this;
}
TestComponent.prototype.render = function() {
return React.createElement(date_picker_1.default, { value: moment(new Date()), format: "YYYY.mm.dd." });
};
return TestComponent;
}(React.Component));
exports.default = TestComponent;
undefined
で、エラーの原因となるdate_picker_1.default
参照し、注意してください。
どうしてですか?インポートされたオブジェクトのdefault
は、DateTimePicker
コンポーネントそのものであるため、呼び出すべきではありません。
次の設定があります。 TypeScriptはcommonjs
モジュールシステムを使用してes5
にコンパイルされます。これはawesome-typescript-loader
ウェブパックローダーによって行われます。残りはwebpack自体で行う必要があります。