出现错误:“当提供‘--isolatedModules’标志时,所有文件都必须是模块”在使用 TypeScript 的 React 中

Imr*_*ran 9 typescript reactjs

我似乎无法摆脱这个错误。我正在使用带有 TypeScript 的 create-react-app。任何帮助,不胜感激。谢谢。

All files must be modules when the '--isolatedModules' flag is provided.  TS1208

  > 1 | import randomcolor from 'randomcolor';
      | ^
    2 | import React from 'react';
    3 | import tasksData from '../../assets/data/tasksData';
    4 | import { Task } from '../../model/task';
Run Code Online (Sandbox Code Playgroud)

这些是我的 tsconfig 文件。我创建了一个基本文件,因为原始 tsconfig 文件被 react 构建脚本覆盖。

tsconfig.base.json

{
    "compilerOptions": {
        "isolatedModules": false
    }
}
Run Code Online (Sandbox Code Playgroud)

配置文件

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react"
  },
  "include": [
    "src"
  ],
  "exclude": [
    "node_modules"
  ],
  "extends": "./tsconfig.base.json"
}
Run Code Online (Sandbox Code Playgroud)

小智 22

使用未使用的文件.ts.tsx文件可能会出现此错误。我有.ts我没有使用的空文件,所以只需要删除未使用的文件。

删除了未使用的文件 /example/index.ts

  • 这让我感到困惑,我超前了,先在文件夹中创建文件,然后再在其中编写任何代码。这就是让我克服错误的原因。 (2认同)

Jua*_*dez 8

问题在于,在默认情况下,在 Typescript 中,每个文件都没有importexport都是旧脚本文件。

由于此类文件不是模块,因此它们合并到全局命名空间中。

改变这种行为

a)在文件中添加任何导入导出,例如:export {}

b)"isolatedModules": false在 tsconfig.json 中设置

注意:NextJS 会true在每次构建时重置该值,因为对于 NextJS 来说,"isolatedModules": true是一个要求


Sha*_*ank 7

我也遇到了同样的错误。发生这种情况的原因是您创建的反应组件没有被使用。这样您就可以调用该组件了,一切顺利。


Ben*_*ves 1

确保您导入的任何内容都是从该路径导出的。

如果它特定于randomcolor导入,请确保还通过安装来添加该包的类型@types/randomcolor

新项目管理

npm i @types/randomcolor
Run Code Online (Sandbox Code Playgroud)

yarn add @types/randomcolor
Run Code Online (Sandbox Code Playgroud)