运行npm run test报错:无法找到模块next-intl/client
解决"Cannot find module 'next-intl/client'"测试错误
问题根源
next-intl从v3版本开始,移除了next-intl/client这个导入路径,所有hooks(比如usePathname)都直接从next-intl包根路径导出,你的测试代码里的mock路径已经过时。
具体解决步骤
- 确认next-intl版本:执行
npm list next-intl查看版本,或者直接看package.json中的依赖声明,如果版本是v3及以上,next-intl/client确实不存在。 - 修改测试文件的mock代码:
把原来的:
改成:jest.mock( 'next-intl/client', (): Record<string, unknown> => ({ usePathname: (): string => '/en', // 其他mock的hooks }) );jest.mock( 'next-intl', (): Record<string, unknown> => ({ usePathname: (): string => '/en', // 其他需要mock的hooks }) ); - 同步业务代码的导入:检查项目中所有导入
next-intl/client的文件,替换成从next-intl导入,比如:// 旧写法 import { usePathname } from 'next-intl/client'; // 新写法(v3+) import { usePathname } from 'next-intl'; - 清理jest缓存并重新测试:执行
jest --clearCache,然后运行npm run test,避免缓存残留导致的问题。 - 版本兼容性检查:如果你的Next.js版本低于13.4,next-intl v3会不兼容,此时要么升级Next.js到13.4+,要么降级next-intl到v2版本(不推荐长期使用)。
内容的提问来源于stack exchange,提问作者Zodiack
相关产品推荐
相关产品推荐

