如何在Angular2组件中导入SignalR?

时间:2017-01-22 12:53:57

标签: javascript angular typescript signalr

我正在使用angular-cli来构建我的Angular2应用程序。

以下是我package.json的摘录:

"dependencies": {
    // ...
    "jquery": "^3.1.1",
    "signalr": "^2.2.1"
    //...
},
"devDependencies": {
    // ...
    "@types/jquery": "^2.0.39",
    "@types/signalr": "^2.2.33"
    //...
}

我的app.component.ts

import { Component } from '@angular/core';
import * as $ from "jquery";
import "signalr";

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
    title = 'app works!';
    constructor() {
        console.log($);
    }
}

现在我从SignalR得到以下错误,说没有添加jQuery,但我已将其导入上面的行:

  

错误:找不到jQuery。请确保之前引用了jQuery   SignalR客户端JavaScript文件。

如果我注释掉import "signalr"; jQuery被正确加载。这里发生了什么?为什么SignalR说找不到jQuery?

1 个答案:

答案 0 :(得分:1)

我用这种方式解决了这个问题:

import $ from 'jquery';
window.jQuery = $;
require('signalr');

Signalr依赖于window.jQuery。出于某种原因import $ from 'jquery'没有设置window.jQuery。这就是为什么需要明确地做到这一点。