0

非常に奇妙な名前の問題に出くわしました。webpack を使用してアプリをビルドおよびコンパイルする Ionic アプリで TypeScript ライブラリ (TypeORM) を使用しようとしています。

TypeORM にはEntity、などと呼ばれるエンティティのデコレータがAbstractEntityあります。インポートして使用すると、Entityデコレータは webpack で使用されているとマークされません。に切り替えると、AbstractEntity使用済みとしてマークされます。他のすべてのデコレータは使用済みとしてマークされます。

この Typescript クラス

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class User {
   @PrimaryGeneratedColumn()
   user_id_internal: number;

   @Column({unique: true})
   user_id: string;
   @Column()
   first_name: string;
   @Column()
   last_name: string;
}

に翻訳されます

var User = (function () {
   function User() {
   }
   return User;
}());
__decorate([
   Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["f" /* PrimaryGeneratedColumn */])(),
   __metadata("design:type", Number)
], User.prototype, "user_id_internal", void 0);
__decorate([
    Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["a" /* Column */])({ unique: true }),
    __metadata("design:type", String)
], User.prototype, "user_id", void 0);
__decorate([
    Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["a" /* Column */])(),
    __metadata("design:type", String)
], User.prototype, "first_name", void 0);
__decorate([
    Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["a" /* Column */])(),
    __metadata("design:type", String)
], User.prototype, "last_name", void 0);
User = __decorate([
    Object(__WEBPACK_IMPORTED_MODULE_0_typeorm__["b" /* Entity */])()
], User);

しかしEntity、未使用とマークされています

// index.ts imports
/* unused harmony namespace reexport */
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__decorator_entities_Entity__ = __webpack_require__(382);

// Entity.ts exports
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);
/* unused harmony export Entity */

しかし、変更EntityするAbstractEntityと使用済みとしてマークされます

// index.ts
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__decorator_entities_AbstractEntity__ = __webpack_require__(555);
/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_32__decorator_entities_AbstractEntity__["a"]; });

// AbstractEntity.ts
/* harmony export (immutable) */ __webpack_exports__["a"] = AbstractEntity;
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);

理由についてのアイデアはありますか?

4

1 に答える 1

0

Entityメインの typescript ファイルで 2 回エクスポートされたことが判明しました。コンパイラは文句を言いませんが、webpack には問題があるようです。2 番目のエクスポートを削除すると、問題が修正されました。

于 2017-09-08T07:21:05.390 に答える