typescript - 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-paths
for 所做的那样ts-node
)
解决方案
我认为您的问题出在版本上,请尝试将您更新到typescript
最新版本。将 NPM 脚本属性添加到 package.json,这样所有调用都将解析为 NPM 包而不是全局3.4.5+
tsconfig-paths
tsc -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
推荐阅读
- java - Spring 多个自动装配的单例实例
- javascript - 如何在每个数据上传到服务器时显示进度或加载栏,并在通过时显示成功消息
- ios - 尝试在 Swift iOS 中缩短 url 时,在范围内找不到“linkBuilder”错误
- assembly - 当全局变量名称长于一个制表符空间时,MIPS 缩进
- javascript - 如何使用 React onScroll 触发动画?
- python - 响应状态代码出现问题,表示未定义响应
- git - 无法从 terraform 注册表下载模块
- types - 与 `.enumerate()` 不匹配的类型:预期类型 `u8`,找到参考 `&_`
- java - 将 byte[] 转换为 ISO-8859-15 或 utf-8
- abap - SAP ArchiveLink 对象无法打开