typescript 找不到从绝对路径导入的文件

kdfy810k  于 2023-01-06  发布在  TypeScript
关注(0)|答案(1)|浏览(229)

我有一个TS项目,其中的文件树包含以下文件:

project
├── server
│   ├── tsconfig.json
│   └── src
│       ├── index.ts
│       └── fileInside.ts
└── shared
    └── fileOutside.ts

例如index.ts中:

import { someFunc } from 'server/src/fileInside';
import { anotherFunc } from 'shared/fileOutside';
//the editor doesn't complain here and even auto-imports from these paths

我希望能够从服务器文件中的绝对路径导入文件,因此我将tsconfig.json设置为如下所示:

{
    "extends": "../tsconfig.json",
    "compilerOptions": {
        "module": "commonjs",
        "outDir": "./dist",
        "baseUrl": "..", // set to make the absolute import dir the project's root dir
    },
    "include": [
        ".", "../shared/",
    ],
    "exclude": [
        "./dist"
    ]
}

这个tsconfig从项目的根目录扩展了另一个tsconfig文件。我不知道是什么原因导致了这个问题,但我会添加它以防万一:

{
    "compilerOptions": {
      "target": "es5",
      "lib": [
        "dom",
        "dom.iterable",
        "esnext"
      ],
      "allowJs": true,
      "skipLibCheck": true,
      "strict": true,
      "forceConsistentCasingInFileNames": true,
      "noEmit": false,
      "incremental": true,
      "esModuleInterop": true,
      "module": "esnext",
      "moduleResolution": "node",
      "resolveJsonModule": true,
      "isolatedModules": true,
      "jsx": "preserve",
      "baseUrl": ".",
      "strictNullChecks": true,
    },
    "include": [
      "next-env.d.ts",
      "**/*.ts",
      "**/*.tsx"
    ],
    "exclude": [
      "node_modules"
    ]
  }

当我运行我的程序时,我得到错误:

Error: Cannot find module 'server/src/fileInside'
Require stack:
 - C:\vs_code_projects\TypeScript\neo_chess\server\src\index.ts
...

为什么会这样?

xzlaal3s

xzlaal3s1#

当然,这是因为ts-node(?!?!)
因为***显然***要在ts-node中有绝对导入,你必须安装一个包:

npm install --save-dev tsconfig-paths

把这些东西加到你的tsconfig.json

"ts-node": {
    "require": ["tsconfig-paths/register"]
},

为什么?知道的人。这就是你的网站开发现状。欢迎来到秀!

相关问题