Typescript、index.d.ts 和 webpack:未找到模块错误
我按照这个教程使用 webpack 创建了一个 Typescript 项目。由于我有很多模块,我在 src/components 文件夹中添加了 index.d.ts,在其中导出我所有的模块:
export {Module1} from "./Module1";
export {Module2} from "./Module2";
export {Module3} from "./Module3";
我将 index.d.ts 添加到 tsconfig.json 文件中:
"files": [
"./src/components/index.d.ts"
]
然后,在位于 src 文件夹中的 index.tsx 中,我导入:
import * as MyModule from "./components/";
代码提示正常工作,所以我认为所有路径都是正确的。然而,当我运行 webpack 时,我收到这个错误:
未找到模块:错误:无法解析目录 './components'
据我所知,webpack 找不到这个 index.d.ts 文件。我尝试按照这里的描述在 webpack.config.js 的 extensions 中添加 d.ts,但随后我得到了一个不同的错误消息。我是不是漏掉了什么?
答案#1
对我来说,我最终将它从 './types' 改成了 './types.d'。
所以类型导入看起来会像这样,
import {
TSomeType,
ISomeInterface,
ESomeEnum
} from 'src/types/components/SomeComponent/types.d'
而不是
import {
TSomeType,
ISomeInterface,
ESomeEnum
} from 'src/types/components/SomeComponent/types'
摘自此评论:
我可以确认这个问题,@Draccoz @filipesilva。
当你将文件名从 .d.ts 改为 .ts 时,这种情况不会发生。当你将导入从 import { Something } from 'yourlib'; 改为 import { Something } from 'yourlib.d'; 时,也不会发生这种情况。
我刚刚把一个正在运行的项目从 webpack-starter 模板(TypeScript/Angular)迁移到 CLI,然后遇到了这个错误,所以我认为这与生成的 CLI 项目有关。
我正在使用 @angular/cli: 1.0.0-rc.2
我认为同样值得注意的是 tsx 文件也能正常工作。我只需要把 types 改成 types.d 才是针对 ts 文件的。
答案#2
想出一个解决方案,使用 index.ts 进行所有导出,而不是 index.d.ts。
