NodeJS mocha测试不识别 *.d.ts声明

zkure5ic  于 2023-08-04  发布在  Node.js
关注(0)|答案(2)|浏览(127)

我在配置mocha以支持我的typescript代码时遇到了问题。我在项目根目录的src文件夹中的global.d.ts中定义了一些类型。
当我运行mocha -r ts-node/register test/**/*.ts时,我收到以下错误:

TSError: ⨯ Unable to compile TypeScript:
src/mediator/index.ts:5:28 - error TS2304: Cannot find name 'DomainEvent'.

5     [key: string]: (event: DomainEvent) => Promise<void>
                             ~~~~~~~~~~~
src/mediator/index.ts:11:57 - error TS2304: Cannot find name 'DomainEvent'.

11     registerHandler(eventType: string, handler: (event: DomainEvent) => Promise<void>) {
                                                           ~~~~~~~~~~~
src/mediator/index.ts:18:37 - error TS2304: Cannot find name 'IntegrationEvent'.

18     async publish(integrationEvent: IntegrationEvent) {

字符串
当我运行ts-node ./src/app.ts时,应用程序运行正常。有人知道我做错了什么吗?
我的tsconfig(我怀疑问题与此有关):

{
    "compilerOptions": {
        "module": "commonjs",
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "target": "es6",
        "noImplicitAny": false,
        "moduleResolution": "node",
        "sourceMap": true,
        "outDir": "dist",
        "baseUrl": ".",
        "paths": {
            "@mediator": ["src/mediator"],
            "*": [
                "node_modules/*"
            ]
        },
        "typeRoots": [
            "./global"
        ]
    },
    "include": [
        "**/*.ts"
    ]
}

0vvn1miw

0vvn1miw1#

将您global.d.ts包含在tsconfig.json中:

{
  "compilerOptions": {
  },
  "include": [
    "./global.d.ts",
    "./src/**/*.d.ts"
  ]
}

字符串

vs3odd8k

vs3odd8k2#

@acrazing非常接近,对我来说有效的是将其添加到tsconfig.json:

{
  "files": [
    "./global.d.ts",
  ]
}

字符串
注意:通配符/globbing不起作用,只能给出单个文件:(
然而,这会破坏eslint,因为它现在认为 * 只有这个文件 * 应该包含在linting中...因此,如果使用eslint,它可能不是一个完整的解决方案。

相关问题