如何使用awesome-typescript-loader导入不导出模块的npm包?

时间:2017-05-12 21:40:03

标签: typescript npm

我正在尝试使用webpack awesome-typescript-loader来捆绑我的项目,但是我遇到了一些不能将自己导出为模块的模块的问题。

一个例子是bootstrap-dialog npm包(我安装了bootstrap-switch和@ types / bootstrap-switch包)。 @types不导出模块,只是声明一个名称空间,并添加到JQuery接口。 :options

在我的app.ts中我使用它:

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

但是webpack的输出不包含bootstrapSwitch代码。我尝试添加: import * as BootstrapSwitch from 'bootstrap-switch';但我显然得到一个错误说明

  

node_modules/@types/bootstrap-switch/index.d.ts'不是模块。

如何确保引导开关被拉入?

我使用bootstrap-switch作为示例,但我有大约5个具有相同问题的包。

2 个答案:

答案 0 :(得分:0)

import * as bs from 'bootstrap-switch';当然会出错,因为没有导出模块。

然而以下两行对我有用......只是不确定这是最好的方法:

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

希望这有助于某人。如果有更好的方法,请告诉我。

答案 1 :(得分:0)

如果文件没有导出,因此仅为其副作用导入(例如,它会增加$ file=file1.txt $ while read line; do if [[ $line =~ Book: ]]; then echo "${line##*: }" | tr '\n' '|'; fi ; done < "$file"; echo -e '\t'; while read line; do if [[ $line =~ Fruit: ]]; then echo "${line##*: }" | tr '\n' '|'; fi ; done < "$file"; echo -e '\t' ),在ECMAScript中以及通过扩展TypeScript导入它的正确方法如下:

jQuery

更完整的例子:

import 'bootstrap-switch';