I have followed many online guides in an attempt to get Cesium to work in a web application built on Angular 7 + Java Spring (e.g. https://www.npmjs.com/package/angular-cesium). But in my browser console, I get the following error:
Uncaught ReferenceError: Cesium is not defined
at eval (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:464)
at Object.eval (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:468)
at __webpack_require__ (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:25)
at Object.eval (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:106)
at __webpack_require__ (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:25)
at Object.eval (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:555)
at __webpack_require__ (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:25)
at eval (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:69)
at eval (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:72)
at webpackUniversalModuleDefinition (webpack-internal:///./node_modules/primitive-primitives/dist/main.js:3)
2. A minimal code example. If you've found a bug, this helps us reproduce and repair it.
The typeRoots array in my tsconfig includes "src/typings.d.ts", which includes "declare var Cesium;", but in my app.main.ts, Cesium is undefined here:
Cesium.buildModuleUrl.setBaseUrl('/assets/cesium/');
Even though WebStorm can navigate with a command+click between app.main.ts and src/typings.d.ts, so I know there is no typo. For reference, my app.module.ts includes:
import { AngularCesiumModule } from 'angular-cesium';
and the following in the provided array:
AngularCesiumModule.forRoot()
I have confirmed that I've run `npm install --save angular-cesium` and `npm install --save cesium`. I've updated angular.json with the assets, styles, and scripts arrays, though the syntax post-angular-cli.json is new:
"architect": {
"build": {
"options": {
"assets": [
{
"glob": "**/*",
"input": "./node_modules/cesium/Build/Cesium",
"output": "./assets/cesium"
}
],
"styles": [
"./node_modules/cesium/Build/Cesium/Widgets/widgets.css"
],
"scripts": [
"./node_modules/cesium/Build/Cesium/Cesium.js"
]
}
}
}
3. Context. Why do you need to do this? We might know a better way to accomplish your goal.
I need to put bar graphs on a globe.
4. The Cesium version you're using, your operating system and browser.
cesium: "^1.59.0",
angular-cesium: "0.0.56",
angular 7.2.12
The application is deployed locally (Mac, sometimes Dockerized environment with Linux) and to Heroku and AWS. The environment doesn't affect the bug.
Thank you for getting back to me! I get it during build (e.g. with `npm start`).
I use Angular CLI and jHipster.
Thank you for that! I will give both suggestions a try today and report back with the results. Once the puzzle is solved, I'll write up the step-by-step of what was done :)
ng add angular-cesiumconst viewer = new Cesium.Viewer(this.el.nativeElement); // Cesium directive's ngOnInit()
Cesium.buildModuleUrl.setBaseUrl('/assets/cesium/'); // app.main.ts, before platformBrowserDynamic(). `window['CESIUM_BASE_URL'] = '/assets/cesium/'` also does not work
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"index": "src/main/webapp/index.html",
"assets": [
"src/main/webapp/favicon.ico",
"src/main/webapp/assets",
{
"glob": "**/*",
"input": "node_modules/cesium/Build/Cesium",
"output": "assets/cesium"
}
],
"styles": ["node_modules/cesium/Build/Cesium/Widgets/widgets.css"],
"scripts": ["node_modules/cesium/Build/Cesium/Cesium.js"]
}
}
}ReferenceError: document is not defined
at t (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/cesium/Build/Cesium/Cesium.js:544:25177)
at new te (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/cesium/Build/Cesium/Cesium.js:561:11749)
at Object.<anonymous> (/Users/marklawley/Developer/jhipster-cesium-template/webpack/webpack.common.js:9:14)
at Module._compile (internal/modules/cjs/loader.js:688:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
at Module.require (internal/modules/cjs/loader.js:636:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/Users/marklawley/Developer/jhipster-cesium-template/webpack/webpack.dev.js:13:22)
at Module._compile (internal/modules/cjs/loader.js:688:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
```
var Cesium = require('cesium/Cesium');var Cesium = require('cesium/Build/Cesium/Cesium.js');Hi Mark,I checked your repository and it seems that you are using custom webpack configuration to build your project and not relying on the built-in provided from the Angular CLI. Check out this article https://cesium.com/docs/tutorials/cesium-and-webpack/ that describes how to add CesiumJS in a webpack application.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/NTadMdUll-c/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/cesium-dev/e83b11ab-d6b6-42c3-b666-33c9bd98320e%40googlegroups.com.
ReferenceError: document is not defined
at t (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/cesium/Build/Cesium/Cesium.js:544:25177)
at new te (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/cesium/Build/Cesium/Cesium.js:561:11749)
at Object.<anonymous> (/Users/marklawley/Developer/jhipster-cesium-template/webpack/webpack.common.js:9:14)
at Module._compile (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/v8-compile-cache/v8-compile-cache.js:192:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
at Module.require (internal/modules/cjs/loader.js:636:17)
at require (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/v8-compile-cache/v8-compile-cache.js:161:20)
at Object.<anonymous> (/Users/marklawley/Developer/jhipster-cesium-template/webpack/webpack.dev.js:13:22)
at Module._compile (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/v8-compile-cache/v8-compile-cache.js:192:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
at Module.require (internal/modules/cjs/loader.js:636:17)
at require (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/v8-compile-cache/v8-compile-cache.js:161:20)
at WEBPACK_OPTIONS (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/webpack-cli/bin/utils/convert-argv.js:116:13)
at requireConfig (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/webpack-cli/bin/utils/convert-argv.js:118:6)
at /Users/marklawley/Developer/jhipster-cesium-template/node_modules/webpack-cli/bin/utils/convert-argv.js:125:17
at Array.forEach (<anonymous>)
at module.exports (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/webpack-cli/bin/utils/convert-argv.js:123:15)
at yargs.parse (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/webpack-cli/bin/cli.js:71:45)
at Object.parse (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/webpack-cli/node_modules/yargs/yargs.js:567:18)
at /Users/marklawley/Developer/jhipster-cesium-template/node_modules/webpack-cli/bin/cli.js:49:8
at Object.<anonymous> (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/webpack-cli/bin/cli.js:390:3)
at Module._compile (internal/modules/cjs/loader.js:688:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
at Module.require (internal/modules/cjs/loader.js:636:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/Users/marklawley/Developer/jhipster-cesium-template/node_modules/webpack/bin/webpack.js:156:2)
at Module._compile (internal/modules/cjs/loader.js:688:30)