【发布时间】:2016-11-23 20:26:41
【问题描述】:
是否有人有一个工作示例,其中 SystemJS(不是 Webpack)与 Angular2(在 TypeScript,而不是 Dart)和 Cesium (npm) 一起使用?
我知道 cesiumjs 网站上的这篇博文: https://cesiumjs.org/2016/01/26/Cesium-and-Webpack/
我喜欢作者所说的“你不能简单地做一个require('cesium')”。这篇文章的问题是它使用了 Webpack 的方式,而我没有这种方式。
无论哪种方式,我都希望解决这个特定错误(来自浏览器):
Error: (SystemJS) AMD module http://localhost:3000/node_modules/cesium/Build/CesiumUnminified/Cesium.js did not define
这是我所拥有的:
在我的systemjs.config.js 文件中:
paths: {'npm:' : 'node_modules/'},
map: {
// our app is within the dist folder
app: 'dist',
// angular bundles
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
...
'require': 'npm:requirejs/require.js',
'cesium': 'npm:cesium/Build/CesiumUnminified/Cesium.js',
// Other packages
...
}
@Injectable() 示例:
let Cesium = require('cesium');
import { Injectable } from '@angular/core';
@Injectable()
export class CesiumClock {
private _start:any = Cesium.JulianDate.now();
private _stop:any = Cesium.JulianDate.addHours(this._start,12,new Cesium.JulianDate());
private _clock:any = new Cesium.Clock({
startTime: this._start,
stopTime: this._stop,
currentTime: this._start,
clockRange: Cesium.ClockRange.LOOP_STOP,
mutliplier: 1,
shouldAnimate: true
});
}
最后,客户端代码尝试使用我的“CesiumClock”,并在浏览器中显示错误(转译后):
import { Component } from '@angular/core';
import { CesiumClock } from '../services/index';
@Component({
moduleId: module.id.replace("/dist", "/app"),
templateUrl: 'stuff.component.html',
styleUrls: [
'stuff.css',
'node_modules/cesium/Build/Cesium/Widgets/widgets.css'
]
})
export class StuffComponent {
constructor(private _cesiumClock:CesiumClock) {}
}
更新:
根据@artem 的回答,我能够从浏览器中删除特定的“错误:(SystemJS)AMD”。但是现在,如果我想引用任何 Cesium,例如 new Cesium.Viewer(...) Cesium 对象只是一张白纸。我看到的错误是
Cesium.Viewer is not a constructor
【问题讨论】:
-
抱歉打断,但对于未来的观众。只需使用github.com/tgftech/angular-cesium
标签: angular typescript systemjs cesium