发布TypeScript NPM包后被引入运行时报模块找不到错误如何解决
问题根因
你发布的TypeScript NPM包package.json缺失main字段,仅配置了types字段:
types字段仅作用于TypeScript编译阶段的类型检查,所以你在编码阶段导入模块不会触发类型报错- Node.js运行时加载NPM包时,会读取
main字段指定的编译后JS入口文件路径,未配置的情况下自然找不到对应模块
修复方案
- 首先确认发包构建后的入口JS路径,假设你的TS源入口是
src/index.ts,构建后输出到dist/src/index.js,就在发包的package.json中新增main配置:
{ "main": "dist/src/index.js" }
同时建议修正types字段的配置,指向实际的入口类型声明文件,避免后续类型查找异常:
{ "types": "dist/src/index.d.ts" }
- 重新执行发包的构建命令
npm run build,再重新发布包,或者如果是本地file依赖,先删除消费项目node_modules下的对应包,重新执行npm install拉取最新构建产物。
额外排查点
如果你的包需要支持子路径导入(比如import xx from '@scope/package/sub-path'),需要确认导入路径对应发包dist目录下的实际JS文件路径,不要直接导入TS源文件路径。
内容的提问来源于stack exchange,提问作者Richard Herbert
相关产品推荐
相关产品推荐

