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

3

首先,我已经准备好了这个GitHub示例仓库以最小的方式来重现我的问题。

我遇到了一个问题,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 应该没有任何问题,不需要任何“helper”(就像 tsconfig-paths 对于 ts-node 所做的那样)。

1
你找到解决方案了吗? - Itay Ganor
2个回答

0

尝试将你的 tsconfig.json 文件传递给 tsc

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


感谢@hackape的回答,但我不认为tsc-c选项;我尝试过这样做:tsc -p path/to/tsconfig.json --outDir out,但是在Windows上测试它没有任何作用(稍后我会在家里用Linux试一下)。 - Farzad
抱歉,我的错,应该是“--config”。 - hackape

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接