У меня есть угловое приложение 7.2, использующее открытые слои 5.3.Я пытаюсь настроить angular universal для этого приложения, но когда я запускаю универсальный сервер (node dist/server.js
), я получаю некоторые ошибки из-за того, что не определены только переменные клиента, такие как window
.
webpack:///./node_modules/ol/has.js?:54
var DEVICE_PIXEL_RATIO = window.devicePixelRatio || 1;
^
ReferenceError: window is not defined
Я пытался использовать domino для макета этих переменных, но он просто завершился с ошибкой из-за элемента canvas
Error: NotYetImplemented
at HTMLCanvasElement.exports.nyi (/my/project/dist/server.js)
Весь код OL импортируется и используется в одном компоненте MapComponent
,В этом компоненте мой импорт выглядит следующим образом:
import Map from 'ol/Map.js';
import View from 'ol/View.js';
import TileLayer from 'ol/layer/Tile.js';
Моя главная проблема заключается в том, что упомянутые ошибки возникают, как только я запускаю универсальный сервер, поэтому даже до попытки доступа к универсальному отображаемому веб-сайту в браузере.
Следовательно, использование чего-то подобного только для создания экземпляра MapComponent
, когда приложение работает на стороне клиента, не работает, так как сбой происходит до этого
<app-map *ngIf="isBrowser"></app-map>
, где переменная isBrowser
инициализируется в компоненте значением isPlatformmBrowser(platformId)
Есть предложения?