你們有沒有過原本好好的項(xiàng)目工程,切換了node版本或者改了一些不相關(guān)的配置,然后它就出異常了,雖然也沒改什么,總覺的是切到大動(dòng)脈。最近公司一個(gè)老項(xiàng)目突然打包失敗了,項(xiàng)目執(zhí)行:pnpm build:test,然后就報(bào)錯(cuò),從提示看是找不到Collector.js.js。
當(dāng)然很明顯,文件名肯定是錯(cuò)誤的。
Error: Cannot find module 'E:\gwm-voice-op-mgr-fe-發(fā)布\node_modules\.pnpm\vite-plugin-dts@3.1.0_@types+node@20.5.1_less@4.1.3_sass@1.63.6_typescript@5.9.3\node_modules\@microsoft\api-extractor\lib-commonjs\collector\Collector.js.js'
at createEsmNotFoundErr (node:internal/modules/cjs/loader:1244:15)
at finalizeEsmResolution (node:internal/modules/cjs/loader:1232:15)
at resolveExports (node:internal/modules/cjs/loader:638:14)
at Module._findPath (node:internal/modules/cjs/loader:711:31)
at Module._resolveFilename (node:internal/modules/cjs/loader:1193:27)
at Function.resolve (node:internal/modules/helpers:193:19)
at _resolve (E:\gwm-voice-op-mgr-fe-發(fā)布\node_modules\.pnpm\jiti@1.21.7\node_modules\jiti\dist\jiti.js:1:246378)
at jiti (E:\gwm-voice-op-mgr-fe-發(fā)布\node_modules\.pnpm\jiti@1.21.7\node_modules\jiti\dist\jiti.js:1:249092)
at E:/gwm-voice-op-mgr-fe-發(fā)布/node_modules/.pnpm/vite-plugin-dts@3.1.0_@types+node@20.5.1_less@4.1.3_sass@1.63.6_typescript@5.9.3/node_modules/vite-plugin-dts/dist/index.cjs:14:22
at evalModule (E:\gwm-voice-op-mgr-fe-發(fā)布\node_modules\.pnpm\jiti@1.21.7\node_modules\jiti\dist\jiti.js:1:251913)
at jiti (E:\gwm-voice-op-mgr-fe-發(fā)布\node_modules\.pnpm\jiti@1.21.7\node_modules\jiti\dist\jiti.js:1:249841)
at E:/gwm-voice-op-mgr-fe-發(fā)布/internal/vite-config/src/config/package.ts:3:45
at evalModule (E:\gwm-voice-op-mgr-fe-發(fā)布\node_modules\.pnpm\jiti@1.21.7\node_modules\jiti\dist\jiti.js:1:251913)
at jiti (E:\gwm-voice-op-mgr-fe-發(fā)布\node_modules\.pnpm\jiti@1.21.7\node_modules\jiti\dist\jiti.js:1:249841)
at E:/gwm-voice-op-mgr-fe-發(fā)布/internal/vite-config/src/index.ts:2:16
at evalModule (E:\gwm-voice-op-mgr-fe-發(fā)布\node_modules\.pnpm\jiti@1.21.7\node_modules\jiti\dist\jiti.js:1:251913)
ELIFECYCLE? Command failed with exit code 1.
這是一個(gè) monorepo 項(xiàng)目,上面的錯(cuò)誤指向的是 pnpm 依賴問題,錯(cuò)誤顯示 vite-plugin-dts 在嘗試加載 @microsoft/api-extractor 的模塊時(shí)找不到文件。
問題定位:
- internal/vite-config 包是存在測(cè) : pnpm-workspace.yaml 配置了 internal/* 作為 workspace 包,但該文件名是 Collector.js.js (多了一個(gè) .js )
- node_modules 中存在殘留緩存 :舊的構(gòu)建產(chǎn)物引用了已刪除的 vite-plugin-dts 依賴
錯(cuò)誤路徑中的版本是 typescript@5.9.3 ,但實(shí)際安裝的是 typescript@5.1.6 。是典型的版本依賴問題。
lock.yaml 中存在兩個(gè) typescript 版本:
- typescript@5.1.6 - 被 vite-plugin-dts 使用
- typescript@5.9.3 - 被 cosmiconfig-typescript-loader 使用
錯(cuò)誤原因是:
這是一個(gè) pnpm + jiti + vite-plugin-dts 的兼容性問題:Collector.js 文件存在,但 jiti 錯(cuò)誤地查找 Collector.js.js 。這是 vite-plugin-dts@3.1.0 與 jiti 的兼容性問題。
- vite-plugin-dts 使用 jiti 動(dòng)態(tài)加載 @microsoft/api-extractor
- 錯(cuò)誤路徑 Collector.js.js (多了一個(gè) .js )表明模塊解析出錯(cuò)
- pnpm 的嚴(yán)格依賴結(jié)構(gòu)導(dǎo)致路徑解析混亂
解決方案 :
這是 vite-plugin-dts@3.1.0 的已知 bug。解決方案是升級(jí)到修復(fù)版本:

screenshot_2026-05-14_14-10-18.png
操作:
- internal/vite-config/package.json - 升級(jí) vite-plugin-dts 到 ^3.2.0
- package.json - 添加 pnpm.overrides 固定 @microsoft/api-extractor 版本
- 清理node_modules并重新安裝依賴