【发布时间】:2020-10-21 15:40:14
【问题描述】:
我有以下文件结构:([] 是文件夹)
[MySQL]
ConnectionPool.ts
Connection.ts
MySQL.ts
在我的代码中,我使用 typescript 来开发应用程序,该应用程序将构建为 javascript 用于生产版本。开发版直接从未编译的 typescript 文件中测试,使用 babel 配置如下:
{
"presets": [
["@babel/preset-env", {
"targets": {
"node": "current"
}
}],
"@babel/preset-typescript"
],
"plugins": [
"@babel/plugin-transform-runtime",
[
"module-resolver",
{
"alias": {
... list of some aliases
}
}
]
]
}
我的问题如下,我的大部分导入都是这样的:
import ConnectionPool from 'MySQL/ConnectionPool`
这对我有用,因为当我运行我的开发代码时,编译器正确地将文件扩展名识别为.ts,并且它还正确地将构建版本的文件扩展名识别为.js。
但是如果我想导入我的MySQL.ts 文件,我不能这样做,因为我会得到以下错误:Error: Cannot find module './'。如果我在 import 语句中指定文件扩展名,一切正常,但是当我构建代码时,那里将不再有 .ts 文件,所以我会在那里出错。
奇怪的是,在我使用webpack 的前端,我没有收到关于导入不带扩展名的文件的投诉,这些文件的名称与同一目录中的文件夹名称相同。对于这个问题,我有什么解决方案,而不是重命名结构中的文件或文件夹?
【问题讨论】:
-
我不确定为什么这种模式适合你,但如果你想继续使用它,你需要养成总是写
/的习惯,如果你想导入文件夹和. js如果你想要文件。您也可以尝试为您的文件夹创建别名。
标签: node.js typescript babeljs