使用编译器选项:路径不适用于节点

问题描述 投票:0回答:1

这个问题非常相似,但是不是在使用

node
时重复恕我直言:

$ tree .                                        
.
├── src
│   ├── main.ts
│   └── utils
│       └── myUtils.ts
└── tsconfig.json

我正在尝试使用

@
导入,如下所示:

$ cat src/main.ts 
import { myLovelyUtilsFunction } from "@folder1/myUtils"
const y = myLovelyUtilsFunction();
console.log(`>>> ${y}`);

我的

tsconfig.json
看起来正确,将
@folder1
映射到它应该的位置:

{
  "compilerOptions": {
    "baseUrl": "src",
    "paths": { "@folder1/*": ["utils/*"] },
    "module": "commonjs"
  }
}

转译进行很好,但运行

node

$ npx tsc -p tsconfig.json # <--- no errors
$ node src/main.js
node:internal/modules/cjs/loader:1078
  throw err;
  ^

Error: Cannot find module '@folder1/myUtils'
Require stack:
< ... omitted ... > 
node.js typescript tsconfig
1个回答
0
投票

我认为您需要

tsconfig-paths
ts-node
才能使模块分辨率正常工作。

修改您的

tsconfig.json

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": { "@folder1/*": ["src/utils/*"] },
    "module": "commonjs"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

您还需要创建一个入口文件点,它将使用 tsconfig-paths 来解析路径。

index.ts

import 'tsconfig-paths/register';
import './src/main';

更新您的

package.json
,然后运行进行测试。

{
  "scripts": {
    "start": "node index.js"
  }
}

您的项目结构现在可能如下所示

.
├── src/
│   ├── main.ts
│   ├── utils/
│   │   └── myUtils.ts
├── tsconfig.json
├── package.json
├── index.ts
© www.soinside.com 2019 - 2024. All rights reserved.