TypeScript 找不到具有非相对路径“src/xxx”的模块

jun*_*lin 10 typescript ts-node

我遇到了解决打字稿中非相对模块的问题。并尝试等等,但它不起作用baseUrl......paths

\n\n

tsconfig.json

\n\n
{\n  "compilerOptions": {\n    "allowJs": true,\n    "baseUrl": ".",\n    "esModuleInterop": true,\n    "module": "commonjs",\n    "sourceMap": true,\n    "strict": true,\n    "target": "esnext",\n    "typeRoots": ["node_modules/@types"]\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

项目目录:

\n\n
root\n  \xe2\x94\x9c\xe2\x94\x80src\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 APIs\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 config\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 constants\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 middlewares\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 routes\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 services\n          - foo.ts   \n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 utils\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 app.ts\n
Run Code Online (Sandbox Code Playgroud)\n\n

app.ts中

\n\n
import foo from \'src/services/foo\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

并与 一起运行ts-node src/app.ts

\n\n

但出现错误:

\n\n
Cannot find module \'src/services/foo\'\n
Run Code Online (Sandbox Code Playgroud)\n

jun*_*lin 5

最后,我添加paths选项来解决它。

tsconfig.json

{
  "compilerOptions": {
    "baseUrl": ".",
    "esModuleInterop": true,
    "module": "commonjs",
    "moduleResolution": "node",
    "removeComments": true,
    "sourceMap": true,
    "target": "esnext",
    "strict": true,
    "noUnusedLocals": true,
    "paths": {
      "@/*": ["src/*"]
    },
    "typeRoots": ["./src/@types", "./node_modules/@types"]
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/node_modules/*", "**/*.spec.ts"]
}
Run Code Online (Sandbox Code Playgroud)

在app.ts中:

import foo from '@/services/foo'
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个很好的解决方案。应该在没有“@/”的情况下工作 (5认同)