Angular2(Typescript)中的SignalR - 导入错误

时间:2016-11-07 12:01:21

标签: angular typescript

我在Angular2-Typescript应用程序中使用signalR时遇到问题。我在之前的Angular 1应用程序中运行良好。我的问题在于导入。

我有intellisense工作,但强类型似乎没有正确映射到原始的js文件。

在node_modules中,我有这两个文件夹(此处为空间编辑):

├───jquery
│   │   jquery.d.ts
│   │   LICENSE.txt
│   │   package.json
│   │   README.md
│   │
│   ├───dist
│   │       core.js
│   │       jquery.js
│
└───signalr
        jquery.signalR.js
        jquery.signalR.min.js
        package.json
        signalr.d.ts

jquery.d.ts文件就是这个: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/jquery/jquery.d.ts

signalr.d.ts文件就是这个: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/signalr/signalr.d.ts

注意:我已经编辑了signalr.d.ts以在最后添加它,否则我无法导入它:

declare var sr : JQueryStatic;

declare module 'signalr'{
    export = sr;
}

在systemjs.config.js中我用它来导入signalr:

map: {
'signalr': 'npm:signalr/jquery.signalR.js'
}

然后在我的组件中使用:

import * as $ from 'signalr'

然后我可以访问intellisense,例如:

enter image description here

但是,有问题。如果我使用:

console.log($.hubConnection);

我未定义。

对此的任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

你可以试试这种方式

map: {
      'ms-signalr-client': 'npm:ms-signalr-client/jquery.signalR.min.js',
      'jquery': 'npm:jquery/jquery.min.js'
}

在你的

    import 'ms-signalr-client';
    import * as $ from 'jquery'; 
    ...
    $.hubConnection
    ...

希望这有帮助