node.js - TypeScript:防止加载不导出的@types 定义(TS2306 不是模块)

标签 node.js typescript

我花了好几个小时尝试加载一个 NodeJS 库,它在 @types 存储库中有一个(在我看来是错误的)类型定义。

我说的是geolib及其 @types/geolib

是的,我知道,该库在 master 上有类型,但还没有针对它的标记版本,我想在未来的情况下解决这个问题。

安装geolib(当时是2.0.22)

  • npm install geolib --save
  • 从“geolib”导入 * 作为 geolib;

一切都很棒!但在您最喜欢的编辑器中没有类型解析

安装@types/geolib

  • npm install @types/geolib --save-dev

这里是中断的地方:

node_modules/@types/geolib/index.d.ts' 不是模块。 (2306)

这是因为类型文件没有 export = geolib 但它试图将此文件作为模块加载。

我的目标是简单地加载 Node 库,并使用 @types/geolib 作为开发的类型提示。

我尝试了多种选择,例如使用新的 types 指令,通过在 tsconfig 中设置 types: [] 来防止自动加载,仅使用 import 'geolib' 导入,但没有似乎解决了定义位于 @types 中并作为模块尝试的问题。

编辑

  • typescript@2.3.4
  • geolib@2.0.22
  • @types/geolib@2.0.2

最佳答案

遇到了同样的问题。

对我有用的是:

import * as GeoLib from 'geolib';

和后来的例子:

import * as GeoLib from 'geolib';
import PositionAsDecimal = GeoLib.PositionAsDecimal;

distance += GeoLib.getDistance(pointAPositionAsDecimal, pointBPositionAsDecimal, accuracyInMeters, precision);

关于node.js - TypeScript:防止加载不导出的@types 定义(TS2306 不是模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44669006/

相关文章:

node.js - 使用 Node.JS(LTS) 读取大文件 (>~10Gb) 的最有效方法是什么?

Typescript 无法解析联合类型的属性

visual-studio - Typescript:生成的 javascript 文件在 Visual Studio 中不可见

typescript - 在 TypeScript 中推断接口(interface)类型参数

node.js - TypeScript 在 Express 中添加自定义请求 header

javascript - 如何在 Node.js 中解析数组?

javascript - 我的正则表达式在 Node.js 中不起作用?

javascript - Google Firebase 错误(函数返回未定义、预期的 Promise 或值)

typescript - 如何通过 TypeScript 中的映射类型删除属性和 promisify 方法

linux - 在脚本 shell linux 中使用 Ls -l 并分隔结果