Typescript找不到"路径"设置中定义的模块

Chr*_*ris 8 javascript typescript reactjs

在我的React项目中,我在webpack配置中定义了一个模块别名.我想开始转向Typescript.

//我试图尽可能地简化设置

这是我tsconfig.json在根文件夹中的:

{
  "compilerOptions": {
    "target": "es6",
    "module": "es6",
    "moduleResolution": "node",
    "jsx": "react",
    "noImplicitAny": true,
    "strictNullChecks": true,
    "sourceMap": true,
    "lib": [
      "dom",
      "es2015",
      "es2016"
    ],
    "baseUrl": "./src",
    "paths": {
      "app": ["./app"]
    }
  },
  "include": [
    "src/**/*"
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是我的项目结构:

[rootDir]
|
|- [src]
|  |
|  |-[app]
|    |
|    |-[components]
|      | ... react components live here
|      |- Test.tsx
|      |- SomeComponent.tsx
|      |- index.js (export { default as Test } from './Test')
|
|- tsconfig.json
|- webpack.config.js
Run Code Online (Sandbox Code Playgroud)

我使用awesome-typescript-loader与Webpack 2,我也包含插件加载路径.我也使用Visual Studio Code,它内置了Typescript,但显示相同的错误.

在我的Typescript组件中,SomeComponent.tsx我想包含另一个组件,如下所示:

import * as React from 'react'
import { Test } from 'app/components'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Cannot find module 'app/components'
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 8

解决方案是编辑路径配置以查找嵌套文件.

"baseUrl": ".",
"paths": {
  "app*": ["src/app*"]
}
Run Code Online (Sandbox Code Playgroud)

现在,当我添加import { Test } from 'app/components'Typescript时src/app/components/index.js,它会调查并且它可以工作.我还想添加@别名以避免与其他模块冲突.像这样:

  "@app*": ["src/app*"]
Run Code Online (Sandbox Code Playgroud)

  • 另外,如果你想从 '@app' 工作中 `import { foo } ,你需要这个 `"@app*": ["src/app","src/app*"]` (3认同)