【问题标题】:Typescript imports of submodules not found errors for mapbox-sdk-js未找到 mapbox-sdk-js 的子模块的 Typescript 导入错误
【发布时间】:2021-05-03 13:02:03
【问题描述】:

我在使用 @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)

接下来我尝试只导入基础地图框库。

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- 我该如何解决?

【问题讨论】:

    标签: typescript mapbox definitelytyped


    【解决方案1】:

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

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

    【讨论】:

    • 看来我需要mapbox__mapbox-sdk。我也认为这只是因为我已经定义了一些类型。谢谢!
    • 仍然很困惑为什么我导入整个库与不导入时会有不同的行为
    • 这里是文档typescriptlang.org/tsconfig#types,如果答案对你有帮助,你可以接受它
    • 是的,我看过文档。仍然困惑为什么我给出的两个示例之间的行为不同。
    【解决方案2】:

    检查一下:

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

    【讨论】:

      猜你喜欢
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 2019-05-25
      • 2019-05-09
      • 1970-01-01
      • 2020-01-20
      • 2016-02-16
      相关资源
      最近更新 更多