Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript NodeInvocationException:没有信号服务的提供程序_Typescript_Signalr_Angular5_Azure Service Fabric - Fatal编程技术网

Typescript NodeInvocationException:没有信号服务的提供程序

Typescript NodeInvocationException:没有信号服务的提供程序,typescript,signalr,angular5,azure-service-fabric,Typescript,Signalr,Angular5,Azure Service Fabric,我使用的是service fabric,我能够编译我的应用程序,但当我连接到它时,我得到以下错误: An unhandled exception occurred while processing the request. NodeInvocationException: No provider for SignalService! Error: No provider for SignalService! 信号服务 import { Injectable, OnInit } from '@a

我使用的是service fabric,我能够编译我的应用程序,但当我连接到它时,我得到以下错误:

An unhandled exception occurred while processing the request.
NodeInvocationException: No provider for SignalService!
Error: No provider for SignalService!
信号服务

import { Injectable, OnInit } from '@angular/core';
import { HubConnection } from '@aspnet/signalr';
import * as signalr from '@aspnet/signalr';

@Injectable()
export class SignalService implements OnInit {
    private _aphub: HubConnection;
    public aphub: HubConnection = this._aphub;

    ngOnInit(): void {
        this._aphub.on("connect", () => {
            console.log("Connect invoked");
        });
        let p = this._aphub.start();
        Promise.all([p])
            .then(() => {
                this.aphub = this._aphub;
            })
            .catch(reason => {
                console.log(reason);
            });
    }

    constructor() {
        let options = {
            transport: signalr.HttpTransportType.WebSockets
                | signalr.HttpTransportType.LongPolling,
            AccessTokenFactory: async () => {
                // Get and return the access token.
                // This function can return a JavaScript Promise if asynchronous
                // logic is required to retrieve the access token.
            }
        };
        let protocol = new signalr.JsonHubProtocol();

        this._aphub = new signalr.HubConnectionBuilder()
            .configureLogging(signalr.LogLevel.Trace).withUrl('/aphub', options)
            .withHubProtocol(protocol).build();
    }
}
它应该非常简单,构建集线器连接,在事件上设置至少一个
,然后启动连接

app.browser.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppModuleShared } from './app.shared.module';
import { AppComponent } from './components/app/app.component';
import { SignalService } from "./signal.service";

@NgModule({
    bootstrap: [AppComponent],
    imports: [
        BrowserModule,
        AppModuleShared
    ],
    providers: [
        { provide: 'BASE_URL', useFactory: getBaseUrl },
        SignalService
    ]
})
export class AppModule {
}

export function getBaseUrl() {
    return document.getElementsByTagName('base')[0].href;
}

从那里,我将服务添加到提供者,这正是它抱怨的,所有的东西都会编译,但它不会运行。

显然,它进入了
app.shared.module.ts

@NgModule({
    declarations: [
        AppComponent,
        NavMenuComponent,
        CounterComponent,
        FetchDataComponent,
        HomeComponent
    ],
    imports: [
        CommonModule,
        HttpModule,
        FormsModule,
        RouterModule.forRoot([
            { path: '', redirectTo: 'home', pathMatch: 'full' },
            { path: 'home', component: HomeComponent },
            { path: 'counter', component: CounterComponent },
            { path: 'fetch-data', component: FetchDataComponent },
            { path: '**', redirectTo: 'home' }
        ])
    ], providers: [
        SignalService
    ]
})