2016-05-03 9 views
1

Der Fehler, ich bin immer ist: AUSNAHME: Reference: Besetzung wird in [null] nicht definiertWie Systemjs zu Modul von CDN laden, die im globalen Format ist?

einen Empfänger Anwendung benutzerdefinierte Chrome Schreiben erfordert die Verwendung der folgenden js-Datei, die die Funktionalität über ein globales 'macht Guss 'Variable:

//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js

ich möchte dieses Skript als Modul laden, mit systemjs anstelle von ein Skript-Tag in index.html.

Dies ist eine Angular2 und TypScript-Anwendung so in einigen Service, MyService, ich möchte in der Lage sein zu importieren und es zu verwenden.

https://github.com/rmtuckerphx/angular2-chromecast-receiver-starterkit

:

index.html

<script> 
     System.config({ 
     packages: { 
      app: { 
      format: 'register', 
      defaultExtension: 'js' 
      } 
     }, 
     paths: { 
      'cast': '//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js' 
     }, 
     meta: { 
      '//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js': {format: 'global'} 
     },  
}); 

     System.import('app/main') 
      .then(null, console.error.bind(console)); 
    </script> 

myService.ts

import {Injectable} from 'angular2/core'; 
import cast from 'cast'; 

@Injectable() 
export class MyService { 
    public init =() => { 
    cast.receiver.logger.setLevelValue(cast.receiver.LoggerLevel.NONE); 
    } 
    ... 
} 

Eine Probe Angular2 + Maschinenschrift + Chrome Receiver Anwendung kann von geklont

Dieser Code muss nicht noch keinen Code ‚werfen‘ laden systemjs verwenden, aber schnell durch die Aktualisierung index.html und gussempfänger manager.service.ts

Antwort

0

Versuche Zugabe

map: { 
    cast-receiver: '//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js' 
} 
modifiziert werden könnte,

an Ihrem System Config dann erklärt das, was Sie über aus dem Skript in Ihrem Dienst importieren möchten,

declare var cast; 

dies Ihr Compiler ermöglicht, den Namen der Sache, die Sie importieren, zu erkennen.

+1

Ihre Antwort brachte mich auf den richtigen Weg. Vielen Dank. Ich habe den Meta-Abschnitt entfernt, den Cast-Empfänger in den Pfadabschnitt eingefügt und "declare var cast" zu myService.ts hinzugefügt. Außerdem fügte myService.ts die Zeile hinzu: "Import von Cast-Receiver importieren"; –