Ionic Capacitor集成Google Maps时TS2688错误求助
问题
我在Ionic Capacitor Angular项目中集成Google Maps,按照官方文档操作,但构建时出现如下错误:
Error: node_modules/@capacitor/google-maps/dist/typings/definitions.d.ts:1:23 - error TS2688: Cannot find type definition file for 'google.maps'. [ng] 1 /// <reference types="google.maps" />
我搜遍了资料、查了文档,甚至尝试了相关Stack Overflow问题的解决方案,但都没用。
更新:附上项目的package.json内容
{ "name": "Project", "version": "0.0.1", "author": "Ionic Framework", "homepage": "https://ionicframework.com/", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, "private": true, "dependencies": { "@angular/animations": "^14.2.5", "@angular/cdk": "^14.2.4", "@angular/common": "^14.0.0", "@angular/core": "^14.0.0", "@angular/forms": "^14.0.0", "@angular/material": "^14.0.4", "@angular/platform-browser": "^14.0.0", "@angular/platform-browser-dynamic": "^14.0.0", "@angular/router": "^14.0.0", "@capacitor/android": "4.1.0", "@capacitor/app": "^4.1.0", "@capacitor/browser": "^4.0.1", "@capacitor/camera": "^4.1.3", "@capacitor/core": "^4.3.0", "@capacitor/geolocation": "^4.0.1", "@capacitor/google-maps": "^4.3.0", "@capacitor/haptics": "^4.0.1", "@capacitor/ios": "^4.3.0", "@capacitor/keyboard": "^4.0.1", "@capacitor/status-bar": "^4.0.1", "@ionic-native/core": "^5.36.0", "@ionic/angular": "^6.1.12", "@ionic/pwa-elements": "^3.1.1", "@ionic/storage": "^3.0.6", "ngx-color-picker": "^13.0.0", "rxjs": "~6.6.0", "swiper": "^8.4.4", "tslib": "^2.2.0", "zone.js": "~0.11.4" }, "devDependencies": { "@angular-devkit/build-angular": "^14.0.0", "@angular-eslint/builder": "~13.0.1", "@angular-eslint/eslint-plugin": "~13.0.1", "@angular-eslint/eslint-plugin-template": "~13.0.1", "@angular-eslint/template-parser": "~13.0.1", "@angular/cli": "^14.0.0", "@angular/compiler": "^14.0.0", "@angular/compiler-cli": "^14.0.0", "@angular/language-service": "^14.0.0", "@capacitor/cli": "^4.1.0", "@ionic/angular-toolkit": "^6.0.0", "@ionic/lab": "3.2.13", "@types/googlemaps": "^3.43.3", "@types/jasmine": "~3.6.0", "@types/jasminewd2": "~2.0.3", "@types/node": "^12.11.1", "@typescript-eslint/eslint-plugin": "5.3.0", "@typescript-eslint/parser": "5.3.0", "eslint": "^7.6.0", "eslint-plugin-import": "2.22.1", "eslint-plugin-jsdoc": "30.7.6", "eslint-plugin-prefer-arrow": "1.2.2", "jasmine-core": "~3.8.0", "jasmine-spec-reporter": "~5.0.0", "karma": "~6.3.2", "karma-chrome-launcher": "~3.1.0", "karma-coverage": "~2.0.3", "karma-coverage-istanbul-reporter": "~3.0.2", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.5.0", "protractor": "~7.0.0", "ts-node": "~8.3.0", "typescript": "~4.7.3" }, "description": "An Ionic project" }
解决方案
从你的package.json可以看出,你安装的是旧版的@types/googlemaps类型包,但Capacitor Google Maps当前依赖的是官方维护的@types/google.maps包,这是导致类型找不到的核心原因。按以下步骤修复:
卸载旧类型包
执行命令:npm uninstall @types/googlemaps --save-dev安装官方类型包
执行命令:npm install @types/google.maps --save-dev配置tsconfig.json
在项目根目录的tsconfig.json中,找到compilerOptions下的types数组(没有则添加),确保包含google.maps:"compilerOptions": { // 其他已有配置... "types": [ "google.maps" ] }清理缓存并重新构建
执行命令:npm cache clean --force rm -rf node_modules rm package-lock.json npm install ng build
完成以上步骤后,构建时的类型定义错误应该就能解决。
内容的提问来源于stack exchange,提问作者Osama El-Masri
相关产品推荐
相关产品推荐

