2017-05-12 1 views
0

Ich versuche mit dem webpack awesome-typescript-loader mein Projekt zu bündeln, habe aber Probleme mit ein paar Modulen, die sich nicht als Module exportieren.Wie kann ich npm-Pakete importieren, die keine Module mit awesome-typescript-loader exportieren?

Ein Beispiel ist das bootstrap-dialog npm-Paket (ich habe die bootstrap-switch und @ types/bootstrap-switch-Pakete installiert). Die @ types exportiert kein Modul, sondern deklariert einfach einen Namespace und fügt sie der JQuery-Schnittstelle hinzu. : https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/bootstrap-switch/index.d.ts

In meinem app.ts ich es als solches verwendet werden:

import {OtherClass} from './otherclass' 

$(document).ready(()=>{ 
    let thisPage= new PageEntry(); 
    thisPage.init(); 
} 

class PageEntry { 
    public init(): void { 
    $('.bss').bootstrapSwitch(); 
    let x = new OtherClass(); 
    x.doSomething(); 
    } 
} 

Aber die Ausgabe von webpack umfassen Code bootstrapSwitch nicht. Ich habe versucht, und fügte hinzu: import * as BootstrapSwitch from 'bootstrap-switch'; aber ich habe offensichtlich ein Fehler, der besagt, dass

node_modules/@types/bootstrap-switch/index.d.ts' ist kein Modul.

Wie stelle ich sicher, dass der Bootstrap-Schalter eingeschaltet wird?

Ich benutze Bootstrap-Switch als ein Beispiel, aber ich habe etwa 5 Pakete mit dem gleichen Problem.

+0

Ich konnte dies mit der folgenden Arbeit zu erreichen: – sheamus

Antwort

0

Wenn eine Datei keine Ausfuhr hat und daher die Nebenwirkungen nur importiert wird (zB es vermehrt jQuery), der richtige Weg, es in ECMAScript zu importieren, und durch Erweiterung Typoskript, wird wie folgt

import 'bootstrap-switch'; 

Ein vollständigeres Beispiel:

import $ from 'jquery'; 
import 'bootstrap-switch'; 

$("[name='my-checkbox']").bootstrapSwitch(); 
0

import * as bs from 'bootstrap-switch'; gibt natürlich einen Fehler, weil kein Modul exportiert wird.

jedoch die beiden folgenden Zeilen für mich gearbeitet ... nur nicht sicher, dies ist der beste Weg, es zu tun:

declare var require: any; 
let bs = require('bootstrap-switch'); 
import {OtherClass} from './otherclass' 

Hope this jemand hilft. Lass mich wissen, ob es einen besseren Weg gibt.

+0

Das ist definitiv ein besserer Weg –

Verwandte Themen