2016-06-10 61 views
2

有沒有人得到SystemJS和SignalR一起工作? 我一直在嘗試使用SystemJS(從jspm)來加載SignalR,但無論我做什麼,總會有異步加載器的競爭狀態。它大約加載一半的時間,我的初始化代碼運行時沒有加載SignalR。SystemJS和SignalR

System.config({ 
    baseURL: '/Scripts', 
    map: { 
     'jquery': '/bundles/jquery', 
     'jquery.ui.widget': 'jquery-ui-1.10.4.js', 
    }, 
    meta: { 
     '/signalr/hubs': { 
      deps: ['jquery.signalR-2.2.0.min.js'] 
     } 
    } 
}); 
Promise.all([ 
    System.import('jQuery.FileUpload/jquery.fileupload.js'), 
    System.import('knockout-3.1.0.debug.js'), 
    System.import('/signalr/hubs') 
]) 
.then(function (libs, gg) { 
    var ko = libs[1]; 

    //My init code 
    var chat = $.connection.jobProgress; 
    // Throws '$.connection is undefined' about half the time 
}) 

回答

1

嘗試使用signalr軟件包配置。

System.config({ 
    baseURL: 'Scripts', 
    map: { 
      "signalr-jquery": "Scripts/jquery.signalR-2.2.0", 
      "signalr": "signalr", 
      "jquery": "/bundles/jquery" //I would pull it from jspm also 
     }, 
     meta: { 
      "jquery": { 
       "format": "cjs" 

      }, 
      "signalr-jquery": { 
       "format": "global", 
       "deps": ["jquery"] 
      } 
     }, 
     packages: { 
      "signalr": { 
       "format": "global", 
       "defaultExtension": false, 
       "meta": { 
        "hubs": { 
         "format": "global", 
         "deps": ["signalr-jquery"] 
        } 
       } 
      } 
     } 
}) 

和進口集線器

System.import('signalr/hubs').then(function(hubs) { 

    }) 
0

我能夠使用此配置加載它:

System.config({ 
    map: { 
     'jquery': 'node_modules/jquery/dist/jquery.js', 
     'signalrJquery': 'jquery.signalR-2.2.0.js', 
     'signalrHubs': 'jquery.signalR-2.2.0.Hubs.js' 
    }, 
    meta: { 
     "jquery-1.10.2.js": { exports: "$" }, 
     signalrJquery: {exports: "$"}, 
     signalrHubs: { 
      deps: ['jquery-1.10.2.js', 'signalrJquery'], 
     exports: "$" 
    } 
}); 

然後,像這樣獲取的:

import * as $ from 'signalrHubs'; 

var $ = require('signalrHubs'); 

請注意,依賴項中的jquery版本是signalr依賴的版本。如果需要,網站的其他部分可以使用更新的版本。