使用AWS Location计算路径时报AWS.Location is not a constructor错误求助
问题原因
- 你使用的AWS JavaScript SDK版本不符合要求:AWS Location Service 对v2版本SDK的最低支持版本为
2.829.0,低于该版本的SDK未内置Location模块,无法识别对应的构造函数。 - 若你使用的是AWS JavaScript SDK v3版本,该版本采用模块化导入设计,不再支持全局AWS对象下直接调用
new AWS.Location()的写法,需要单独导入Location相关模块才能使用。
解决方法
方案1:继续使用AWS JavaScript SDK v2
- 升级SDK到符合要求的版本
- npm安装场景执行命令:
npm install aws-sdk@latest --save - CDN引入场景替换为高于2.829.0的版本资源链接即可
- npm安装场景执行命令:
- 升级完成后原有业务代码无需修改即可正常调用,但需注意补充缺失的必填参数:调用
calculateRoute接口必须传入CalculatorName参数,值为你提前在AWS Location Service控制台创建的路径计算器的名称。
方案2:使用AWS JavaScript SDK v3
- 首先安装对应依赖模块:
npm install @aws-sdk/client-location @aws-sdk/credential-provider-cognito-identity @aws-sdk/client-cognito-identity --save - 调整代码写法为v3的模块化调用方式,示例代码如下:
import { LocationClient, CalculateRouteCommand } from "@aws-sdk/client-location"; import { CognitoIdentityCredentials } from "@aws-sdk/credential-provider-cognito-identity"; import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity"; async function ruteador() { const credentials = new CognitoIdentityCredentials( { IdentityPoolId: identityPoolId }, new CognitoIdentityClient({ region: "你的AWS区域" }) ); const locationClient = new LocationClient({ region: "你的AWS区域", credentials: credentials }); const params = { DeparturePosition: [-122.7565,49.0021], DestinationPosition: [-122.3394, 47.6159], DistanceUnit: "Miles", CalculatorName: "你的路径计算器名称" }; try { const data = await locationClient.send(new CalculateRouteCommand(params)); console.log(data); } catch (err) { console.log(err, err.stack); } }
内容的提问来源于stack exchange,提问作者Richi
相关产品推荐
相关产品推荐

