离子 2 信号R 错误" Please ensure jQuery is referenced before the SignalR client JavaScript file."



我正在尝试在离子 2 应用程序中使用 signalR。对于信号 im 使用MS-信号器-客户端库。

索引.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
    <meta charset="UTF-8">
    <title>Ionic App</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <link rel="icon" type="image/x-icon" href="assets/icon/favicon.ico">
    <link rel="manifest" href="manifest.json">
    <meta name="theme-color" content="#4e8ef7">
    <!-- cordova.js required for cordova apps -->
    <script src="cordova.js"></script>


    <!-- un-comment this code to enable service worker
    <script>
      if ('serviceWorker' in navigator) {
        navigator.serviceWorker.register('service-worker.js')
          .then(() => console.log('service worker installed'))
          .catch(err => console.log('Error', err));
      }
    </script>-->
    <link href="build/main.css" rel="stylesheet">
</head>
<body>
    <!-- Ionic's root component and where the app will load -->
    <ion-app></ion-app>
    <!-- The polyfills js is generated during the build process -->
    <script src="build/polyfills.js"></script>
    <script src="build/main.js"></script>
    <!-- The bundle js is generated during the build process -->
    <!-- Zone.js and Reflect-metadata  -->
    <script src="build/js/Reflect.js"></script>
    <script src="build/js/zone.js"></script>
<!--Below added jquery and signal-->
    <script src="../node_modules/jquery/dist/jquery.js"></script>
    <script src="../jquery.signalR.js"></script>   
</body>
</html>

使用这里

 import { Injectable } from '@angular/core';
    import $ from 'jquery';
    import 'ms-signalr-client';
    import 'rxjs/Rx';
    @Injectable()
    export class SignalRService {

        connection: hubConnection;
        hubProxy:any;

        constructor() {

        }

        startConnection() {
            console.log("Stage 1");
            this.connection =$.hubConnection('http://192.168.0.213:9000');//Server Deployed

            console.log("Stage 2");
            this.hubProxy = this.connection.createHubProxy('broadcaster');

            console.log("Stage 3");
            this.connection.start({ jsonp: true })
                .done(() => {
                    console.log('Now connected, connection ID=' + this.connection.id);

                })
                .fail((err) => {
                    console.log('Could not connect');
                });
        }           
    }

但是每次都会出现此错误。我有搜索,但没有找到任何解决方案。

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

注意:我也厌倦了这个库,但它有一个问题.

问题:Ionic 2 信号器未与集线器连接

参考这个 Ng2 信号器 .我只是复制代码,它现在工作正常.

import 'expose-loader?jQuery!jquery';
import '../node_modules/signalr/jquery.signalR.js';

我让它工作的唯一方法是将这样的代码添加到供应商文件的顶部:

import 'expose-loader?$!expose-loader?jQuery!jquery';
import './node_modules/signalr/jquery.signalR.min.js';

jQuery应该通过别名在全球范围内可用,这就是为什么我在webpack配置中使用explose-loader导入和ProvidePlugin的原因:

new webpack.ProvidePlugin({
    $: 'jquery',
    jQuery: 'jquery'
})

请注意,您可以将 jQuery 版本 2 或更高版本用于 signalR。

希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新