Есть ли у кого-нибудь рабочий пример, когда SystemJS (не Webpack) используется с Angular2 (в TypeScript, а не Dart) с цезием (npm)?Получите Cesium, SystemJS и Angular2 для работы?
Я знаю этом блоге на сайте 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', и дает мне ошибку (после transpiling) в браузере:
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) {}
}
UPDATE:
на основе @artem
-х ответ, я смог удалить определенную «Ошибка: (SystemJS) AMD» из браузера. Но теперь, если я хочу сослаться на что-либо цезий, такой new Cesium.Viewer(...)
объект Cesium
- это просто пустой список. Ошибка я вижу
Cesium.Viewer is not a constructor
не работает для меня пока: -/Я получаю сообщение об ошибке ' ИСКЛЮЧЕНИЕ: Неподготовлено (в обещании): Ошибка: Ошибка в: 0: 0 вызвана: Не удалось обработать привязку «click: function() {return function() {cameraClicked.raiseEvent (this);}}" Сообщение: n (...). bind не является функцией ТипError: невозможно обработать привязку "click: function() {return function() {cameraClicked.raiseEvent (this);}}" Сообщение: n (...). Bind не является функцией 'любая идея? – mfreiholz
@mfreiholz - Я думаю, у вас может быть отдельный вопрос. Я бы поставил вопрос, и, если вы считаете, что это поможет, связать это в отношении вашей настройки? Если наши вопросы дублируют, кто-то обязательно это заметит. – westandy