11

Why does the angular compiler can't find GeolocationPosition and GeolocationPositionError? VSC doesn't give an error and only during compiling it gives me an error.

Error: src/app/modules/shared/services/position.service.ts:10:46 - error TS2304: Cannot find name 'GeolocationPosition'.

10   private positionSource = new ReplaySubject<GeolocationPosition>(1);

I worked around this by putting the any type instead, but I'm just curious why Angular is giving me the error and how I can fix this.

I've already tried different compiler targets (es5, es6, es2018) but with no luck. Already installed @types/core-js but also without any luck. Is there any @types module that I'm missing perhaps?

This is my current tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es5",
    "module": "es2020",
    "lib": [
      "es2018",
      "dom"
    ]
  },
  "angularCompilerOptions": {
    "strictInjectionParameters": true,
    "strictInputAccessModifiers": true,
    "strictTemplates": true
  }
}

fieldhof
  • 155
  • 1
  • 10

4 Answers4

23

In typescript 4.0.x this type was called Position. In typescript 4.1.x it was renamed to GeolocationPosition.

I think you'll find that your VS Code is using its built in version of typescript and that your project is using an earlier version.

To fix:

npm install --save-dev typescript@4.1.2
Richard
  • 4,740
  • 4
  • 32
  • 39
  • take note that you probably will have to update angular as well as the earlier minor versions of angular 11 require typescript up to version 4.1.0 – Gabriel H Mar 25 '21 at 11:07
  • IntelliJ: Preferences -> Languages & Frameworks -> Typescript. Select a version, and use the `npm install --save-dev typescript@x.y.z` to ensure node isi the same as IntelliJ. – Sam Barnum Jun 01 '22 at 15:54
  • Replacing GeolocationPosition with Position fixed the issue. thanks – Faisal Mushtaq Sep 02 '22 at 12:54
0

I had the same issue and I solved changing local Angular CLI used by project.
Explanation:
I updated to Angular 11, but I forgot to update Angular CLI. The ng build gave me this output:

Your global Angular CLI version (9.1.7) is greater than your local
version (9.1.0). The local Angular CLI version is used.

Steps:
Update Angular CLI (if necessary)

npm install -g @angular/cli

Update npm

npm install -g npm

Then ng build output become:

Your global Angular CLI version (11.1.2) is greater than your local version (9.1.0). The local Angular CLI version is used.

Install npm-check-updates

npm i -g npm-check-updates

Execute ncu -u to view packages to update.
Execute npm install to update all packages.
After this, all should work.

blitiri
  • 11
0

My solution was to change version of ol and ol types from "^6.5.0" to exact version "6.5.0",

"ol": "6.5.0", @types/ol": "6.5.0",

Newer packages have breaking change with GeolocationPositionError type.

Angular 9 - with typescript ~3.8.3

Sanid Sa
  • 264
  • 3
  • 9
0

If you are using typescript version below 4, then replacing GeolocationPosition with Position will fix the issue.

Faisal Mushtaq
  • 485
  • 4
  • 11