【问题标题】:`fake-timers` 7.1.x compile error "Cannot find name 'queueMicrotask'."`fake-timers` 7.1.x 编译错误“找不到名称 'queueMicrotask'。”
【发布时间】:2021-08-18 00:25:19
【问题描述】:

我正在尝试编译一个 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,所以如果这里有什么我很明显的东西我错过了,请善待并告诉我它是什么 :)

谢谢! 弗兰斯

【问题讨论】:

    标签: node.js sinon sfdx


    【解决方案1】:

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

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

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

    您可能会在 this issue 中找到一些背景知识。

    【讨论】:

    • 谢谢!这个周末我会尝试你的解决方法,如果它有效(大约;))我会接受这个作为答案。感谢您的详尽解释,我猜想第 8 版即将发布!
    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多