如何让systemjs从全局格式的CDN加载模块?
How to get systemjs to load module from CDN that is in global format?
我得到的错误是:
异常:ReferenceError:演员表未在 [null]
中定义
编写自定义 Chromecast 接收器应用程序需要使用以下 js 文件,该文件通过全局“cast”变量公开功能:
//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js
我想使用 systemjs 将此脚本作为模块加载,而不是在 index.html 中使用脚本标记。
这是一个 Angular2 和 TypeScript 应用程序,所以在某些服务 MyService 中,我希望能够导入 'cast' 并使用它。
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);
}
...
}
示例 Angular2 + TypeScript + Chromecast Receiver 应用程序可以从以下位置克隆:
https://github.com/rmtuckerphx/angular2-chromecast-receiver-starterkit
此代码目前没有任何代码可以使用 systemjs 加载 'cast',但可以通过更新 index.html 和 cast-receiver-manager.service.ts
快速修改
尝试添加
map: {
cast-receiver: '//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js'
}
到您的系统配置,然后通过
声明您要从服务中的脚本导入的内容
declare var cast;
这将使您的编译器能够识别您正在导入的内容的名称。
我得到的错误是: 异常:ReferenceError:演员表未在 [null]
中定义编写自定义 Chromecast 接收器应用程序需要使用以下 js 文件,该文件通过全局“cast”变量公开功能:
//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js
我想使用 systemjs 将此脚本作为模块加载,而不是在 index.html 中使用脚本标记。
这是一个 Angular2 和 TypeScript 应用程序,所以在某些服务 MyService 中,我希望能够导入 'cast' 并使用它。
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);
}
...
}
示例 Angular2 + TypeScript + Chromecast Receiver 应用程序可以从以下位置克隆:
https://github.com/rmtuckerphx/angular2-chromecast-receiver-starterkit
此代码目前没有任何代码可以使用 systemjs 加载 'cast',但可以通过更新 index.html 和 cast-receiver-manager.service.ts
快速修改尝试添加
map: {
cast-receiver: '//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js'
}
到您的系统配置,然后通过
声明您要从服务中的脚本导入的内容declare var cast;
这将使您的编译器能够识别您正在导入的内容的名称。