javascript - SystemJS'in global formatta olan bir modülü CDN'den yüklemesini nasıl sağlarım?
Aldığım hata şudur: EXCEPTION: ReferenceError: cast tanımlı değil [null] içinde
Özel bir Chromecast alıcı uygulaması yazmak, işlevselliği global bir 'cast' değişkeni üzerinden sunan aşağıdaki js dosyasının kullanılmasını gerektirir:
//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js
Bu betiği index.html'de bir script etiketi kullanmak yerine systemjs kullanarak bir modül olarak yüklemek istiyorum.
Bu bir Angular2 ve TypeScript uygulaması, bu yüzden bazı servislerde, MyService'de, 'cast'i içe aktarabilmeyi ve kullanabilmeyi istiyorum.
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);
}
...
}
Bir örnek Angular2 + TypeScript + Chromecast Alıcı uygulaması şuradan klonlanabilir:
https://github.com/rmtuckerphx/angular2-chromecast-receiver-starterkit
Bu kod şu anda systemjs kullanarak 'cast' yüklemek için herhangi bir koda sahip değil, ancak index.html ve cast-receiver-manager.service.ts güncellenerek hızlıca değiştirilebilir.
Cevap #1
Eklemeyi dene
map: {
cast-receiver: '//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js'
}
sistem yapılandırmanıza, ardından hizmetinizdeki betikten içe aktarmak istediğiniz şeyi bildirmenize
declare var cast;
bu, derleyicinizin içe aktardığınız şeyin adını tanımasını sağlar.
