首页 > 解决方案 > TypeScript 编译器 (tsc) 无法识别导入别名

问题描述

首先,我已经准备好这个示例 GitHub 存储库,作为重现我的问题的最低要求。

我遇到了tsc无法将我的 TypeScript 编译为 JavaScript 的问题。

我正在使用导入别名,并且可以使用以下方式直接运行我的应用ts-node程序tsconfig-paths

ts-node -r tsconfig-paths/register main

但是,令我困惑的是,当我运行以下命令时:

tsc --outDir out main

我从编译器中看到TS2307错误,抱怨它找不到由我的导入别名定义的模块:

main.ts:1:24 - error TS2307: Cannot find module '@utils/.'.

1 import * as utils from '@utils/.';
                     ~~~~~~~~~~

main.ts:2:22 - error TS2307: Cannot find module '@cmd/.'.

2 import * as cmd from '@cmd/.';
                   ~~~~~~~~

我在这里想念什么?我认为在tsc没有任何“帮助者”的情况下应该可以正常工作(就像tsconfig-pathsfor 所做的那样ts-node

标签: typescripttsctsconfig

解决方案


我认为您的问题出在版本上,请尝试将您更新到typescript最新版本。将 NPM 脚本属性添加到 package.json,这样所有调用都将解析为 NPM 包而不是全局3.4.5+tsconfig-pathstsc -p tsconfig.json

"scripts": {
    "build": "tsc -v && tsc -p tsconfig.json",
    "prestart": "rimraf dist && npm run build",
    "start:project": "npm run prestart && node dist/main.js",
}

然后通过执行以下操作调用脚本:npm run start:project


推荐阅读