2

我正在尝试编译一个 Salesforce sfdx 插件,它是一个节点项目,具有(除其他外)以下依赖链,最终导致 fake-timers@^7.1.0:

@salesforce/command@2.2.0-> @oclif/test@^1.2.4-> fancy-test@^1.4.3-> @types/sinon@*-> @sinonjs/fake-timers@^7.1.0

使用 Typescript 编译器进行编译时tsc,出现以下错误:

node_modules/@sinonjs/fake-timers/types/fake-timers-src.d.ts:11:28 - error TS2304: Cannot find name 'queueMicrotask'.

11     queueMicrotask: typeof queueMicrotask;
                              ~~~~~~~~~~~~~~


Found 1 error.

error Command failed with exit code 1.

这看起来像一个错误,fake-timers-src.d.ts但在 7.1.0 中引入,所以我可以尝试将版本锁定在 7.0.5,但这可能会破坏各种其他东西。

使用/维护假计时器的人是否知道如何解决这个问题?或者这会在未来的版本中修复吗?

顺便说一句,我是一个完全的 NodeJS n00b,所以如果这里有一些我很明显的东西我错过了,请善待并告诉我它是什么 :)

谢谢!弗兰斯

4

1 回答 1

1

弗兰斯!来自诗浓团队的 fatso83 在这里 :)

这里的问题完全与TypeScript有关,与Node无关,所以我感到你的痛苦。难怪你想知道。问题是定义可能缺少该属性。对于版本 7,我们尝试从 JSDoc 生成 TypeScript 定义。这对于更简单的类型相当有效,但最终,TypeScript 在描述类型方面比 JSDoc(如运算符)更强大,所以这是一场艰苦的战斗,永远不会产生与外部绝对类型项目typeof中可用的类型相同的质量. 我们最终放弃了这项工作,因此这不会得到修复,但它自然会随着版本 8 消失(不会发布自己的类型)。

你可以做的是:(npm install @sinonjs/fake-timers@6这是以前的版本)和npm install @types/sinonjs__fake-timers@6(这是外部维护的类型)。

您可能会在这个问题中找到一些背景知识。

于 2021-06-09T22:15:43.223 回答