Reactjs 无法使用React解析typescript模块

Reactjs 无法使用React解析typescript模块,reactjs,typescript,Reactjs,Typescript,因此,我最近决定启动一个新的React项目,但使用typescript,但编译时出现错误: ./src/index.tsx Module not found: Can't resolve 'components' in 'D:\path\to\proyect\src' 有趣的是,Webstorm和VS代码在导入模块时都没有标记问题,但我在复制时得到了未找到的错误 索引d.ts如下所示 module "components" { import App from ".

因此,我最近决定启动一个新的React项目,但使用typescript,但编译时出现错误:

./src/index.tsx
Module not found: Can't resolve 'components' in 'D:\path\to\proyect\src'
有趣的是,Webstorm和VS代码在导入模块时都没有标记问题,但我在复制时得到了未找到的错误

索引d.ts如下所示

module "components" {
import App from "./app/App";
import Home from "./home/Home";

export const AppComponent = App;
export const HomeComponent = Home;
}
我试图避免的是必须在somo文件夹中写入组件的所有路径,如./dir1/dir2/dir3/dir4/等

tsconfig:

{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"module": "esnext",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"jsx": "react",
"typeRoots": [
  "node_modules/@types"
],
"lib": [
  "es2018",
  "dom"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true
},
"include": [
"src"
]}
文件夹结构:

src/
   |───components
   |   |───index.d.ts
   │   |───app 
   |   └───home
   └───hooks

          

问题是我在
index.d.ts
中声明常量并导出模块,但是该文件仅用于类型定义,这就是为什么Webstorm和VS code对该文件没有问题的原因,因为他们会假设它是一个模块声明,但编译器从未期望在
d.ts
文件中找到模块导出


解决方案是删除文件名中的
*.d.
,并将其重命名为类似于
module.ts
的名称,以执行相应的导入和导出操作问题是我在
index.d.ts
中声明常量并导出模块,但是该文件仅用于类型定义,这就是为什么Webstorm和VS code没有定义的原因问题,因为他们将假定该文件是模块声明,但编译器从未期望在
d.ts
文件中找到模块导出

解决方案是删除文件名中的
*.d.*
,并将其重命名为类似于
module.ts
执行相应的导入和导出操作

什么是“在编译时”<代码>组件/索引.d.ts错误。它必须是源文件
.ts
。它不能是
.d.ts
文件,否则将永远无法工作。另外,它必须看起来像这样(都在顶层!):
export{defaultasapp}from./App/App”;从“/Home/Home”导出{default as Home}组件/索引.d.ts
错误。它必须是源文件
.ts
。它不能是
.d.ts
文件,否则将永远无法工作。另外,它必须看起来像这样(都在顶层!):
export{defaultasapp}from./App/App”;从“/Home/Home”导出{default as Home}