繁体   English   中英

Typescript 找不到 mapbox-sdk-js 的子模块导入错误

[英]Typescript imports of submodules not found errors for mapbox-sdk-js

使用@mapbox/mapbox-sdk时,我在 typescript 导入中偶然发现了一个奇怪的行为。 我已经安装了@mapbox/mapbox-sdk@types/mapbox__mapbox-sdk 代码本身有效。 问题完全是打字。

首先我尝试了以下导入:

import { MapiRequest } from '@mapbox/mapbox-sdk/lib/classes/mapi-request';
import Geocoding from '@mapbox/mapbox-sdk/services/geocoding';
import Matrix from '@mapbox/mapbox-sdk/services/matrix';

当我这样做时,对于这 3 个导入,我得到 3 个类似的错误

Could not find a declaration file for module '@mapbox/mapbox-sdk/lib/classes/mapi-request'. '<path>/node_modules/@mapbox/mapbox-sdk/lib/classes/mapi-request.js' implicitly has an 'any' type.
  Try `npm install @types/mapbox__mapbox-sdk` if it exists or add a new declaration (.d.ts) file containing `declare module '@mapbox/mapbox-sdk/lib/classes/mapi-request';`ts(7016)

接下来我尝试只导入基础 mapbox 库。

import * as _ from '@mapbox/mapbox-sdk';

import { MapiRequest } from '@mapbox/mapbox-sdk/lib/classes/mapi-request';
import Geocoding from '@mapbox/mapbox-sdk/services/geocoding';
import Matrix from '@mapbox/mapbox-sdk/services/matrix';

显然这不起作用( @mapbox/mapbox-sdk包中没有顶级模块)但奇迹般地 Typescript 突然能够找到MapiRequestGeocodingMatrix的类型,并且错误出现在第一行

File '<path>/node_modules/@types/mapbox__mapbox-sdk/index.d.ts' is not a module.ts(2306)

1-这里发生了什么? 2-我该如何解决?

您需要为类型安装@types/mapbox__mapbox-sdk并在tsconfig.json中添加类型:

{
  "compilerOptions": {
    ...
    "types": ["@types/mapbox__mapbox-sdk"],
    ...
  }
}

检查这个:

  • @mapbox/mapbox-sdk版本等于@types/mapbox__mapbox-sdk版本
  • 您必须使用带有路径import mbxClient from '@mapbox/mapbox-sdk/lib/classes/mapi-client'的 api 导入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM