打字稿:找不到模块'反应'

时间:2016-11-30 23:02:29

标签: reactjs typescript

我不明白为什么找不到它。

$ cat tsconfig.json

{
  "compilerOptions": {
    "sourceMap": true,
    "target": "es6",
    "jsx": "react",
    "types": [
      "lodash",
      "react",
      "react-dom"
    ]
  }
}

$ tree node_modules/@types

node_modules/@types/
├── lodash
│   ├── README.md
│   ├── index.d.ts
│   ├── package.json
│   └── types-metadata.json
├── react
│   ├── README.md
│   ├── index.d.ts
│   ├── package.json
│   └── types-metadata.json
└── react-dom
    ├── README.md
    ├── index.d.ts
    ├── package.json
    ├── server.d.ts
    └── types-metadata.json

导入组件文件。

// src/components/component.tsx

import * as React from "react";

是什么给出了?

11 个答案:

答案 0 :(得分:10)

我有同样的问题。你只需要安装@types:

npm i -D @types/react

答案 1 :(得分:7)

如果您不使用typescript 2.1,则应升级到它。看起来你正在使用你所拥有的@types的2.x版本。

这是我正在使用的tsconfig.json文件:

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    "noResolve": false,
    "noImplicitAny": false,
    "removeComments": true,
    "sourceMap": true,
    "allowJs": true,
    "jsx": "react"
  },
  "exclude": [
    "./node_modules/**/*"
  ]
}

自从我解决了您遇到的同一问题以来已经过了几天,但我认为这里的关键是"moduleResolution": "node""allowJs": true

答案 2 :(得分:4)

有同样的问题。就我而言,禁用deno extension解决了这个问题。某种程度上搞乱了进口。

答案 3 :(得分:3)

与版本2.4。*一样,此错误的责任配置条目(在大多数情况下)是:

"compilerOptions": {
          ...
          "moduleResolution": "node" <---------- this entry
          ...
}

我希望它有所帮助!

答案 4 :(得分:1)

为解决打字稿“ 无法找到模块'react'”(来自eslint规则)

您需要安装 @ types / react

$ npm i -D @types/react

$ yarn add -D @types/react

然后在您的 .eslintrc文件中添加扩展数组中的react插件:

...
extends: [
        'plugin:react/recommended',
        ...  
],

希望所有的:D

都会更清晰

答案 5 :(得分:0)

还要检查是否存在您的node_modules。如果是,并且仍然遇到此问题,请删除它,然后通过运行npm install重新安装它。这为我解决了问题

答案 6 :(得分:0)

如果您已安装@types/react,但仍然无法正常工作,建议您使用Typescript的最新版本,然后关闭IDE /编辑器,删除node_modules文件夹,并运行npm installyarn install并再次检查。它应该现在可以工作。

答案 7 :(得分:0)

我已经解决了类型相同的问题:

npm i -D @types/react or yarn add @types/react

更多关于我的tsconfig.json的信息,“ jsx”参数在纱线启动时自动从“反应”更改为“反应-jsx”。 可以帮助我的是我的tsconfig:

{
  "compilerOptions": {
    "jsx": "react",
    "target": "es6",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "allowJs": true,
    "removeComments": true,
    "sourceMap": true,
    "noResolve": false,
    "noImplicitAny": false
  },
  "include": [
    "src",
    "./node_modules/**/*"
  ]
}

答案 8 :(得分:0)

在撰写此评论时,我在我的 cmd 上看到一个错误,说我没有安装 typescript。

npm install typescript

它成功了

答案 9 :(得分:0)

npm i @types/reactyarn add @types/react 将解决问题。由于缺少反应类型而发生错误

答案 10 :(得分:-3)

const React = require("react");

这解决了这个问题。