Angular 11:为什么编译器编译时找不到'GeolocationPosition'? "Cannot find name 'GeolocationPosition'"
Angular 11: Why can't the compiler find 'GeolocationPosition' during compiling? "Cannot find name 'GeolocationPosition'"
为什么 angular 编译器找不到 GeolocationPosition
和 GeolocationPositionError
? VSC 不会报错,只有在编译时才会报错。
Error: src/app/modules/shared/services/position.service.ts:10:46 - error TS2304: Cannot find name 'GeolocationPosition'.
10 private positionSource = new ReplaySubject<GeolocationPosition>(1);
我通过使用 any
类型来解决这个问题,但我很好奇为什么 Angular 会给我错误以及我该如何解决这个问题。
我已经尝试过不同的编译器目标(es5
、es6
、es2018
)但没有成功。已经安装 @types/core-js
但也没有任何运气。有没有我遗漏的@types 模块?
这是我现在的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
}
}
我有同样的问题,我解决了更改项目使用的本地 Angular CLI。
解释:
我更新到 Angular 11,但我忘记更新 Angular CLI。 ng build
给了我这个输出:
Your global Angular CLI version (9.1.7) is greater than your local
version (9.1.0). The local Angular CLI version is used.
步骤:
更新 Angular CLI(如有必要)
npm install -g @angular/cli
更新 npm
npm install -g npm
然后ng build
输出变成:
Your global Angular CLI version (11.1.2) is greater than your local version (9.1.0). The local Angular CLI version is used.
安装 npm-check-updates
npm i -g npm-check-updates
执行 ncu -u
查看要更新的包。
执行 npm install
更新所有包。
在此之后,一切都应该工作。
在打字稿 4 中0.x 这种类型被称为 Position
。在打字稿 4.1.x 中,它被重命名为 GeolocationPosition
.
我认为您会发现您的 VS Code 使用的是其内置版本的打字稿,而您的项目使用的是早期版本。
修复:
npm install --save-dev typescript@4.1.2
为什么 angular 编译器找不到 GeolocationPosition
和 GeolocationPositionError
? VSC 不会报错,只有在编译时才会报错。
Error: src/app/modules/shared/services/position.service.ts:10:46 - error TS2304: Cannot find name 'GeolocationPosition'.
10 private positionSource = new ReplaySubject<GeolocationPosition>(1);
我通过使用 any
类型来解决这个问题,但我很好奇为什么 Angular 会给我错误以及我该如何解决这个问题。
我已经尝试过不同的编译器目标(es5
、es6
、es2018
)但没有成功。已经安装 @types/core-js
但也没有任何运气。有没有我遗漏的@types 模块?
这是我现在的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
}
}
我有同样的问题,我解决了更改项目使用的本地 Angular CLI。
解释:
我更新到 Angular 11,但我忘记更新 Angular CLI。 ng build
给了我这个输出:
Your global Angular CLI version (9.1.7) is greater than your local
version (9.1.0). The local Angular CLI version is used.
步骤:
更新 Angular CLI(如有必要)
npm install -g @angular/cli
更新 npm
npm install -g npm
然后ng build
输出变成:
Your global Angular CLI version (11.1.2) is greater than your local version (9.1.0). The local Angular CLI version is used.
安装 npm-check-updates
npm i -g npm-check-updates
执行 ncu -u
查看要更新的包。
执行 npm install
更新所有包。
在此之后,一切都应该工作。
在打字稿 4 中0.x 这种类型被称为 Position
。在打字稿 4.1.x 中,它被重命名为 GeolocationPosition
.
我认为您会发现您的 VS Code 使用的是其内置版本的打字稿,而您的项目使用的是早期版本。
修复:
npm install --save-dev typescript@4.1.2