在安装 jest 之后,建筑物会引发一堆错误:file.d.ts' is not a module

Posted

技术标签:

【中文标题】在安装 jest 之后,建筑物会引发一堆错误:file.d.ts\' is not a module【英文标题】:right after installing jest the building throws a bunch of errors: file.d.ts' is not a module在安装 jest 之后,建筑物会引发一堆错误:file.d.ts' is not a module 【发布时间】:2021-12-19 19:18:08 【问题描述】:

在基于 nodejs-typescript 的项目中安装 jest 时究竟会发生什么?在安装 jest (npm i -D jest @types/jest) 之后,tsc 会抛出一堆错误,并带有关于我的类型 (index.d.ts' is not a module) 的相同消息:

jeff@jeff:~/my-app$ tsc
node_modules/@types/babel__core/index.d.ts:11:34 - error TS2306: File '/home/jeff/my-app/src/types/index.d.ts' is not a module.

11 import  GeneratorOptions  from '@babel/generator';
                                    ~~~~~~~~~~~~~~~~~~

node_modules/@types/babel__core/index.d.ts:12:31 - error TS2306: File '/home/jeff/my-app/src/types/index.d.ts' is not a module.

12 import  ParserOptions  from '@babel/parser';
                                 ~~~~~~~~~~~~~~~

node_modules/@types/babel__core/index.d.ts:13:22 - error TS2306: File '/home/jeff/my-app/src/types/index.d.ts' is not a module.

13 import template from '@babel/template';
                        ~~~~~~~~~~~~~~~~~
...s

我的 types 声明或 tsconfig.json 是否有问题?我该如何解决?

tsconfig.json


  "compilerOptions": 
    "target": "ES2020",
    "lib": ["ESNext"],
    "module": "commonjs",
    "allowJs": true,
    "outDir": "./build",
    "esModuleInterop": true,
    "paths": 
      "*": ["./src/types"]
    
  ,
  "include": ["app.ts", "src"],
  "exclude": [
    "**/*.spec.?s",
    "**/*.test.?s"
  ]

src/types/index.d.ts

type Text = string;

app.ts

const text: Text = 'ok'

console.log(text);

【问题讨论】:

【参考方案1】:

我通过将以下内容添加到tsconfig.json 中的compilerOptions 解决了同样的问题:

"moduleResolution": "Node"`

我在 TypeScript GitHub 上找到了这个问题的解决方案:Targeting ES20XX results in errors when building。

【讨论】:

以上是关于在安装 jest 之后,建筑物会引发一堆错误:file.d.ts' is not a module的主要内容,如果未能解决你的问题,请参考以下文章

Rust 和 Flamegraph:使用 cargo 安装时出现一堆错误

在玩笑中模拟功能组件会引发“无效的变量访问”错误

如何让 Jest 静默测试抛出的错误

如何从 jest.setup.js 中的配置修复酶上的“语法错误:意外标识符”

如何在 JEST 单元测试中修复“SVG 未定义”

模拟 Observable 以在 Jest 中抛出错误