首先,我准备了此示例 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-paths
为ts-node
所做的那样(
尝试将您的 tsconfig.json 传递给tsc
tsc --config path/to/tsconfig.json --outDir out main
我认为您的问题与版本有关,请尝试将typescript
更新为3.4.5+
并将tsconfig-paths
更新到最新版本。将 NPM 脚本属性添加到 package.json,这样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