Je suis tombé sur un problème de nom très étrange. J'essaie d'utiliser une bibliothèque TypeScript (TypeORM) dans une application Ionic qui utilise webpack pour construire et compiler l'application.Webpack secouant l'arbre - supprime l'exportation Entité Entité
TypeORM a des décorateurs pour Entités appelés Entity
, AbstractEntity
et autres. Lorsque j'importe et utilise le décorateur Entity
, il n'est pas marqué comme utilisé par webpack. Quand je passe au AbstractEntity
, il est marqué comme utilisé. Tous les autres décorateurs sont marqués comme utilisés.
Cette classe Tapuscrit
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;
}
est traduit en
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);
mais Entity
est marqué comme utilisé
// 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 */
mais quand je change Entity
-AbstractEntity
est marqué comme utilisé
// 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);
Des idées sur pourquoi?
Leurs docs disent que vous devez passer en es6 et que uglifyjs ne supporte pas l'harmonie. Avez-vous installé git: //github.com/mishoo/UglifyJS2#harmony dans des scripts d'application ionique? – misha130
Leurs documents sont les docs de webpack? Je n'ai modifié aucun des paramètres des scripts ionic-app, c'est pourquoi il est compilé en es5. Donc le faire passer à es6 pourrait aider? –
Nah, désolé mon mauvais j'ai mal lu les docs TypeORM. Je ne pense pas que passer à ES6 va aider. On dirait un bug avec les décorateurs et webpack – misha130