ae-wrong-input-file-type
"不正确的文件类型;API 提取器期望分析具有 .d.ts 文件扩展名的编译器输出。"
备注
与其他一些工具不同,API 提取器不会直接处理 TypeScript 源文件。相反,它被设计为分析编译器发出的 .d.ts 文件以及您的 NPM 包导出的文件。这种设计选择确保 API 提取器以与外部消费者相同的方式看到您的库。它还确保 .d.ts 汇总保留了您的工具链、编译器版本和手动编写的输入的特定语法选择。
因此,您的 mainEntryPointFilePath
必须具有 .d.ts 文件扩展名,所有导入的模块也必须如此。如果遇到任何不正确的文件扩展名,将报告 ae-wrong-input-file-type
错误。
如何修复
为了减少日志噪音,ae-wrong-input-file-type
错误最多报告一次。要查看导入路径的完整列表,请使用 --diagnostics
参数调用 API 提取器,然后查找具有问题文件扩展名的任何文件路径,例如 .ts
或 .tsx
。尝试确定为什么该文件被导入而不是相应的 .d.ts
文件。
提示
如果您在确定为什么导入特定文件时遇到困难,调用编译器时使用
--traceResolution
参数可能会有所帮助。tsc --traceResolution > trace.log
尽管这会报告源文件(而不是
mainEntryPointFilePath
视图)的依赖关系图,但它仍然可以提供信息。为了获得准确的跟踪,您可以对将您的项目作为 NPM 依赖项导入的辅助项目调用编译器。
常见问题
您是否在编译器生成任何 .d.ts 输出之前调用了 API 提取器?确保您的工具链在调用 API 提取器之前写入 .d.ts 文件。
您的编译器是否将
example.d.ts
写入与example.ts
相同的文件文件夹中?这是一个不好的做法。考虑分离输入和输出文件,例如src/{*.ts,*.tsx}
与lib/{*.js,*.d.ts}
。NPM 包依赖项是否导出 TypeScript 源文件而不是 .d.ts 声明文件?请包维护人员按照将预构建的输出而不是源代码进行分发的标准做法进行操作。
作为临时缓解措施,您可以通过在您的 **api-extractor.json** 文件中添加如下所示的节来禁用 ae-wrong-input-file-type
验证。
"messages": {
"extractorMessageReporting": {
// Disable this validation at your own risk: Processing an incorrect file type
// may lead to other errors. Function bodies may incorrectly get emitted in the
// .d.ts rollup.
"ae-wrong-input-file-type": {
"logLevel": "none"
}
}
}