2017-09-07 1 views
0

Ich stolperte über eine sehr seltsame Namensfrage. Ich versuche, eine TypeScript-Bibliothek (TypeORM) in einer Ionic App zu verwenden, die Webpack zum Erstellen und Kompilieren der App verwendet.Webpack Baum Schütteln - entfernt den Export namens Entity

TypeORM hat Dekoratoren für Entitäten, die Entity, AbstractEntity und andere genannt werden. Wenn ich den Entity Dekorateur importiere und benutze, wird er nicht wie von webpack benutzt markiert. Wenn ich zu AbstractEntity wechsle, wird es als gebraucht markiert. Jeder andere Dekorateur wird als gebraucht markiert.

Diese Typoskript Klasse

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; 
} 

in

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); 

übersetzt aber Entity wird als ungenutzt

// 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 */ 

markiert, aber wenn ich Entity-AbstractEntity wird als

verwendet markiert ändern
// 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); 

Irgendwelche Ideen, warum?

+0

Ihre Dokumente sagen, dass Sie zu Es6 wechseln müssen und Uglifyjs unterstützt keine Harmonie. Haben Sie in ionischen App-Skripten git: //github.com/mishoo/UglifyJS2#harmony installiert? – misha130

+0

Ihre Dokumente sind Dokumente des Webpacks? Ich habe keine der Einstellungen der ionic-app-Skripte geändert, weshalb es nach es5 kompiliert wurde. Es könnte also helfen, es auf es6 zu transponieren? –

+0

Nein, tut mir leid, mein Fehler, ich habe die TypeORM-Dokumente falsch gelesen. Ich glaube nicht, dass das transpilieren zu es6 helfen wird. Scheint wie ein Fehler bei den Dekorateuren und dem Webpack – misha130

Antwort

0

Es stellt sich heraus, dass Entity wurde zweimal in der Hauptformatsdatei exportiert. Der Compiler beklagt sich nicht, aber Webpack scheint ein Problem damit zu haben. Durch Entfernen des zweiten Exports wurde das Problem behoben.

Verwandte Themen