2016-06-22 15 views
1

Gibt es eine Möglichkeit zu verhindern, dass der Buildprozess von WebPack fehlschlägt, nachdem der Typskript-Compiler anfängt, an nicht aufgelösten Variablen zu schreien, die tatsächlich bereits in der ProvidePlugin-Konfiguration des Webpacks konfiguriert sind?Wie verhindert man, dass TypeScript die Erstellung von Webpacks auf nicht aufgelösten Variablen unterbricht, die im ProvidePlugin von Webpack deklariert sind?

webpack.config.js

plugins: [ 
... 
new webpack.ProvidePlugin({ 
      $: "jquery", 
      jQuery: "jquery", 
      "window.jQuery": "jquery", 
      "_": "underscore", 
      "underscore": "underscore" 
      //'process.env.NODE_ENV': '"development"' 
     }), 

] 

tsconfig.json

{ 
    "compilerOptions": { 


    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "suppressImplicitAnyIndexErrors": true, 
    "declaration": false 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 

https://webpack.github.io/docs/list-of-plugins.html#provideplugin

Aus meiner Erfahrung, das Typoskript nicht bewusst ist, von denen Variablen injiziert werden in das Modul und als Ergebnis wird der Build nicht abgeschlossen.

Dies ist die Ausgabe des Build

ERROR in ./src/file1.component.ts 
(77,9): error TS2304: Cannot find name '$'. 

ERROR in ./src/file2.component.ts 
(78,13): error TS2304: Cannot find name '$'. 

ERROR in ./src/file3.ts 
(155,15): error TS2304: Cannot find name 'jQuery'. 

ERROR in ./src/file4.ts 
(108,9): error TS2304: Cannot find name '$'. 

Antwort

0

Wenn ich verstehe ProvidePlugin richtig müssen Sie noch jQuery erklärt haben und als Module (Äußerlichkeiten oder Alias) unterstreichen.

Deshalb würde ich empfehlen, mit dieser Module in Typoskript zu laden:

import * as $ from 'jquery'; 
import * as _ from 'underscore'; 

Dann müssen Sie nur für die Bibliotheken Definition (.d.ts) Dateien. Ich empfehle typings für diesen Zweck.

typings install jquery --global 
typings install underscore --global 

Ich nehme an, Sie ts-loader verwenden, die das automatisch handhaben würde.

Wenn Sie die Anweisungen import vermeiden möchten, können Sie diese Bibliotheken immer noch mit Definitionen aus Typisierungen deklarieren.

Oder Sie können Ihre eigene vereinfachte Erklärung erstellen:

declare var jQuery: any; 
declare var $: any;