迁移至Yarn v4与Vitest后出现Vitest模块找不到错误求助
Yarn v4 + Vitest 工作区模块找不到问题解决方法
错误信息
file:///home/username/Projects/projectName/node_modules/tinypool/dist/chunk-E2J7JLFN.js:46 throw error; ^ Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/username/Projects/projectName/be-shared/node_modules/vitest/dist/chunks/index.lVXYBqEP.js' imported from /home/username/Projects/projectName/be-shared/node_modules/vitest/dist/worker.js at finalizeResolution (node:internal/modules/esm/resolve:265:11) at moduleResolve (node:internal/modules/esm/resolve:933:10) at defaultResolve (node:internal/modules/esm/resolve:1169:11) at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:383:12) at ModuleLoader.resolve (node:internal/modules/esm/loader:352:25) at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:227:38) at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:87:39) at link (node:internal/modules/esm/module_job:86:36) { code: 'ERR_MODULE_NOT_FOUND', url: 'file:///home/username/Projects/projectName/be-shared/node_modules/vitest/dist/chunks/index.lVXYBqEP.js' } Node.js v20.16.0 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Unhandled Errors ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
解决步骤
清理依赖缓存并重装
执行以下命令彻底清理缓存后重新安装依赖:yarn cache clean yarn installYarn v4的缓存机制可能残留旧的模块引用,清理后能确保依赖路径正确。
统一Vitest版本
检查根目录和be-shared工作区的package.json,确保所有工作区的Vitest版本完全一致。版本不一致会导致Yarn Workspaces的依赖扁平化出现异常,引发模块路径错误。临时禁用Vitest线程池
在vitest.config.ts中添加线程禁用配置,排查是否是线程池加载模块的问题:import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { threads: false, }, });如果禁用后能正常运行,再逐步排查线程相关的配置或依赖冲突。
重置依赖结构
删除根目录和be-shared工作区的node_modules文件夹,以及根目录的yarn.lock文件,然后重新执行yarn install。这能彻底清除旧的依赖残留,避免错误路径引用。检查Yarn PnP配置(若启用)
如果项目使用Yarn PnP模式,确保Vitest被正确添加到devDependencies中,并且通过yarn pnpify vitest命令运行测试,验证PnP是否能正确解析模块路径。
内容的提问来源于stack exchange,提问作者Илья Хоришко
相关产品推荐
相关产品推荐

