You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行npm link或npm i <repo>后无法解析模块(main与types配置正确)

解决ts-logger模块无法解析的问题

我帮你梳理几个关键排查点和修复步骤,应该能搞定这个模块找不到的问题:

1. 先确认打包产物(dist文件夹)真的存在

你的scripts里把install设为了tsc,这里有个容易踩的坑:

  • 本地开发包时,必须先手动执行一次npm run install(也就是触发tsc编译),生成dist文件夹后再执行npm link,不然链接到测试项目的包根本没有编译后的可执行文件。
  • 如果是通过npm i <repo>安装,你的包的install脚本会在安装时自动执行,但要注意:typescript必须放在dependencies里,不能是devDependencies——默认情况下用户安装你的包时不会下载devDependencies里的依赖,这会导致tsc命令找不到,打包失败,自然就没有dist文件。

2. 核对tsconfig.json的配置细节

你设置了rootDir: ./,这意味着根目录下(除了排除的node_modules和dist)所有.ts文件都会被编译到dist里,但要确认:

  • 你的入口文件(比如index.ts)确实在根目录,这样编译后才会生成dist/index.js和dist/index.d.ts,和package.json里的main、types路径完全对应。
  • 如果你的源码是放在src文件夹里的,那rootDir应该改成./src,同时确保index.ts在src下,这样编译后才会生成正确路径的dist/index.js。

3. 检查package.json的字段准确性

再仔细核对这几个核心字段,建议把容易混淆的install脚本改个名字:

{
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "build": "tsc", // 建议改成build,避免和npm自带的install命令混淆
    "install": "tsc" // 如果非要保留这个,务必确保typescript在dependencies里
  }
}

你可以在本地开发时执行npm run build生成dist,推送到GitHub前也要确保dist已经生成(或者在publish脚本里自动触发build)。

4. npm link后的验证小技巧

执行npm link后,去测试项目的node_modules/ts-logger目录下看看:

  • 有没有dist文件夹?里面的index.js和index.d.ts是否存在?
  • 如果没有,说明你的包在link前没编译,回到第一步手动执行npm run build后重新link就行。

5. 导入方式的适配检查

如果用require('ts-logger')(CommonJS规范),确保你的tsconfig里module字段是CommonJS(target设为es5的话,module默认就是CommonJS,不用额外配置);如果用import {Logger} from 'ts-logger'(ESModule规范),测试项目的package.json需要加上"type": "module",或者你的包编译时把module设为ESNext/ES6。

按照这些步骤排查下来,应该就能解决模块无法解析的问题了。

内容的提问来源于stack exchange,提问作者Vasya Krenta vkrenta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 07:22:31