【问题标题】:TypeScript compiler (tsc) doesn't recognize import aliasesTypeScript 编译器 (tsc) 无法识别导入别名
【发布时间】:2019-04-03 04:13:41
【问题描述】:

首先,我已准备好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 所做的那样)

【问题讨论】:

  • 您找到解决方案了吗?

标签: typescript tsc tsconfig


【解决方案1】:

尝试将您的 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 试试)
  • 对不起我的错应该是--config
【解决方案2】:

我认为您的问题出在版本上,请尝试将您的 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

【讨论】:

    猜你喜欢
    • 2020-10-22
    • 2019-11-12
    • 2020-03-29
    • 2019-11-24
    • 2018-12-29
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多