Express 项目中对 JS 库 (node-gtf) 的 Typescript 支持

问题描述

拥有一个 Typescript Express 服务器,用于使用 GTFS 库 (https://github.com/BlinkTagInc/node-gtfs) 使用 GTFS 数据

  • 版本(“gtfs”:“^3.0.4”)

以这种方式导入库

import { importGtfs } from 'gtfs';

但是由于没有 TS 支持,我面临这个错误

require() of ES modules is not supported.
require() of <Project-path>/node_modules/gtfs/index.js from <Project-path>/src/index.ts is an ES module file as it is a .js file whose nearest parent package.
json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename index.js to end in .cjs,change the requiring code to use import(),or remove "type": "module" from <Project-path>/node_modules/gtfs/package.json.

以这种方式使用它 import { importGtfs } from 'gtfs';

为 GTFS 找到了一个类型库 https://www.npmjs.com/package/gtfs-types 但是找不到在项目中包含这些类型的解决方

解决方法

此问题是由您使用的 gtfs 版本的 package.json 中的 "type": "module" 属性引起的

enter image description here

type = module 需要 es6 语法,但是在某处使用了 commonjs 需要。

这是节点 v12.11.0 的已知问题,已在 v12.11.1 中解决

你可以将 gtfs 版本降级到 2.4.4,它没有这个 type:module 属性。

如果这是依赖的依赖,则将其添加到分辨率中

"resolutions":{
   "gtfs": "^2.4.4"
}