gpt4 book ai didi

Angular 5 + SignalR (DefinitelyTyped) - 找不到名称 '$'

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:03 24 4
gpt4 key购买 nike

我正在尝试在我的 Angular 5 应用程序中使用 SignalR

我从 DefinitelyTyped 安装了这些强类型:

npm install --save @types/jquery
npm install --save @types/signalr

我的 packages.json 中的 typescript 显示版本 2.5.3

现在我试着像这样使用它:

import { Injectable } from '@angular/core';

@Injectable()
export class SignalRService {

constructor() {}

public ConnectTo(url: string): void {

var hubConnection = $.hubConnection();
var hubProxy = hubConnection.createHubProxy('DashboardHub');
hubProxy.on('Example', (e: any) => {
console.log('worked');
});

hubConnection.start();
}
}

编译器提示如下:

error TS2304: Cannot find name '$'.

...即使 intellisense 可以找到 $.hub:

Image showing intellisense


如果我尝试将 declare var $ :any; 添加到我的文件中,它会编译,但我在浏览器的控制台中收到另一个错误:$.hubConnection 不是函数

我错过了什么吗?

最佳答案

要在 Angular 中使用 SignalR,您需要执行以下步骤:

使用 npm 安装 jquery、signalr 包:

npm install signalr
npm install jquery

添加类型:

npm install --save @types/jquery 
npm install --save @types/signalr

将脚本添加到angular-cli.json

"apps": [{
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"../node_modules/signalr/jquery.signalR.min.js"
],
}]

在服务中你需要添加:

declare var $: any;

简单的 Angular 代码示例:

import { Injectable } from '@angular/core';

declare var $: any;
@Injectable()
export class SignalrService {
private connection: any;
private proxy: any;
private ulr: any;

constructor() {}

public startConnection(): void {
this.connection = $.hubConnection(this.url);
this.proxy = this.connection.createHubProxy('ProcessingHub');

this.connection.start().done((data: any) => {
console.log('Connected to Processing Hub');
this.sendMessage();
}).catch((error: any) => {
console.log('Hub error -> ' + error);
});
}

public sendMessage(): void {
this.proxy.invoke('SendMessage', 'test')
.catch((error: any) => {
console.log('SendMessage error -> ' + error);
});
}
}

关于Angular 5 + SignalR (DefinitelyTyped) - 找不到名称 '$',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47474987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com