创建React App找不到声明的模块

时间:2019-03-18 21:37:42

标签: typescript create-react-app typescript-typings tsconfig react-tsx

我有一个使用CRA打字稿创建的项目。

在项目的根目录中有tsconfig.json和一个名为types的文件夹。在类型文件夹中,我为一个模块创建了modulename.d.ts文件,该模块在node_modules上没有默认类型,在@types\module-name上也没有任何内容。

但是在编译时出现错误。

  

类型错误:找不到模块'thename'的声明文件。 “ /*/node_modules/thename/dist/entry.js”隐式具有“ any”类型。

为什么编译器在类型文件夹中找不到类型声明?

// .d.ts
declare module 'foo-react' {
    import * as React from 'react';
    // ...
}

这是tsconfig.json

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": { "*": ["types/*"] },
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "plugins": [{ "name": "typescript-tslint-plugin" }],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "preserve"
  },
  "include": ["src"]
}

1 个答案:

答案 0 :(得分:0)

原来如此

  1. types文件夹(我在项目根目录中自定义的文件夹)的路径应添加到include属性,而不是paths属性。 "include": ["src", "./types"]
  2. types文件夹中,其结构类似于types/<module_name>/index.d.ts。现在,该索引文件可以将该模块声明为any或详细声明所有类型。