TypeScript编译器(TSC)无法识别导入别名

时间:2019-04-03 04:13:42

标签: typescript tsc tsconfig

首先,我准备this sample GitHub repository作为重现我的问题的最低要求。

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

我正在使用导入别名,并且可以使用ts-nodetsconfig-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-pathsts-node做的那样)

2 个答案:

答案 0 :(得分:0)

尝试将您的tsconfig.json传递给tsc

tsc --config path/to/tsconfig.json --outDir out main

答案 1 :(得分:0)

我认为您的版本存在问题,请尝试将typescript更新为3.4.5+,并将tsconfig-paths更新为最新版本。向package.json添加一个NPM脚本属性,这样,所有tsc -p tsconfig.json的调用都将解析为NPM软件包,而不是全局的

"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

相关问题