Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript找不到路径中定义的模块_Typescript - Fatal编程技术网

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

Typescript找不到路径中定义的模块,typescript,Typescript,我有一个typescript应用程序,它具有用于绝对导入的路径。我的tsconfig如下所示: { "compilerOptions": { "baseUrl": ".", "paths": { "utils*": ["src/utils*"], "operations*": ["src/operations*"], "actions*": ["src/actions*"], "components*

我有一个typescript应用程序,它具有用于绝对导入的
路径。我的tsconfig如下所示:

{
    "compilerOptions": {
      "baseUrl": ".",
      "paths": {
        "utils*": ["src/utils*"],
        "operations*": ["src/operations*"],
        "actions*": ["src/actions*"],
        "components*": ["src/components*"],
        "constants*": ["src/constants*"],
      },
      "outDir": "dist",
      "module": "esnext",
      "target": "esnext",
      "moduleResolution": "node",
      "noEmit": true,
      "lib": ["es2017", "dom"],
      "noUnusedLocals": true,
      "sourceMap": true,
      "skipLibCheck": true,
      "allowJs": true,
      "jsx": "preserve",
      "noUnusedParameters": true,
      "preserveConstEnums": true,
      "strict": true,
      "allowSyntheticDefaultImports": true,
      "noImplicitAny": true,
    },
    "exclude": [
      "node_modules",
      "dist",
    ],
    "include": [
      "./src/**/*"
    ],
    "files": [
      "./typings/index.d.ts"
    ]
  }
我试着使用这样的导入:

import { AppStateType } from 'actions/app';
但是,我找不到模块“操作/应用程序”

我听了答案,但似乎不起作用


我做错了什么?

路径的模式有点挑剔

试试这个:

"paths": {
    "utils/*": ["src/utils/*"],
    "operations/*": ["src/operations/*"],
    "actions/*": ["src/actions/*"],
    "components/*": ["src/components/*"],
    "constants/*": ["src/constants/*"],
},
请注意添加了斜杠

由于您设置了
baseUrl
,我认为应该可以,但如果没有,下一步可能是指定完整的相对路径(相对于
tsconfig
文件):

这将满足TypeScript编译器的要求,但如果您使用的是Webpack或Parcel,您可能会收到投诉,说他们无法找到文件,即使TypeScript编译得很好。在这种情况下,您需要为绑定器设置别名。它看起来有点像这样:

{
    "compilerOptions": {
      "baseUrl": ".",
      "paths": {
        "utils*": ["src/utils*"],
        "operations*": ["src/operations*"],
        "actions*": ["src/actions*"],
        "components*": ["src/components*"],
        "constants*": ["src/constants*"],
      },
      "outDir": "dist",
      "module": "esnext",
      "target": "esnext",
      "moduleResolution": "node",
      "noEmit": true,
      "lib": ["es2017", "dom"],
      "noUnusedLocals": true,
      "sourceMap": true,
      "skipLibCheck": true,
      "allowJs": true,
      "jsx": "preserve",
      "noUnusedParameters": true,
      "preserveConstEnums": true,
      "strict": true,
      "allowSyntheticDefaultImports": true,
      "noImplicitAny": true,
    },
    "exclude": [
      "node_modules",
      "dist",
    ],
    "include": [
      "./src/**/*"
    ],
    "files": [
      "./typings/index.d.ts"
    ]
  }

// webpack.config.js or similar
// ...
  resolve: {
    extensions: [".js", ".jsx"], // import without .js, .jsx, .json extensions
    alias: {
      "utils": path.resolve(__dirname, "src/utils/*"),
      "operations": path.resolve(__dirname, "src/operations/*"),
      "actions": path.resolve(__dirname, "src/actions/*"),
      "components": path.resolve(__dirname, "src/components/*"),
      "constants": path.resolve(__dirname, "src/constants/*")
    }
  },
// package.json
// ...
  "alias": {
    "utils": "./src/utils/*",
    "operations": "./src/operations/*",
    "actions": "./src/actions/*",
    "components": "./src/components/*",
    "constants": "./src/constants/*"
  }