5

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

tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "baseUrl": ".",
    "esModuleInterop": true,
    "module": "commonjs",
    "sourceMap": true,
    "strict": true,
    "target": "esnext",
    "typeRoots": ["node_modules/@types"]
 }
}

项目目录:

root
  ├─src
    ├── APIs
    ├── config
    ├── constants
    ├── middlewares
    ├── models
    ├── routes
    ├── services
          - foo.ts   
    ├── utils
    └── app.ts

app.ts中

import foo from 'src/services/foo'

并运行ts-node src/app.ts.

但是会发生错误:

Cannot find module 'src/services/foo'
4

2 回答 2

4

最后,我添加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"]
}

app.ts 中

import foo from '@/services/foo'
于 2019-05-06T14:19:17.187 回答
0

您可能已经有了解决方案,但对于新来者来说,它是。

您将需要添加tsconfig-pathsmodule-alias

在 package.json

"_moduleDirectories:" ["src]

在 app.ts 中

import 'module-alias/register';

您还需要在根目录中创建 tsconfig-path.js 文件。

const tsConfigPaths = require('tsconfig-paths');
const tsConfig = require('./tsconfig.json');
tsConfigPaths.register({
   baseUrl: tsConfig.compilerOptions.outDir,
   paths: tsConfig.compilerOptions.paths,
})

在 .tsconfig.json 中:

{
"compilerOptions": {
  "baseUrl": "src",
  "paths": {
     "*":["./*"]
  }
},
"exclude": ["node_modules"],
"include": ["./src/**/*.ts"]
}
于 2021-11-04T21:15:04.350 回答