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

运行测试抛出TypeError: stylis.middleware is not a function求助

TypeError: stylis.middleware is not a function 排查解决思路

这个报错是运行时加载到的stylis模块没有暴露middleware方法导致的,按下面顺序排查基本都能解决:

  • 第一步先确认依赖树里的stylis版本情况
    在项目根目录执行对应包管理命令查看依赖关系:
    • npm项目执行:npm ls stylis
    • yarn项目执行:yarn why stylis
    • pnpm项目执行:pnpm ls stylis
      注意:stylis从4.0版本开始才正式对外暴露middleware API,如果查到依赖树里存在3.x版本的stylis,或者多个版本的stylis被重复安装,就会触发这个报错。常见触发场景是CSS-in-JS相关依赖(比如@emotion/cache、styled-components、linaria等)和stylis版本不匹配。
  • 第二步修复版本冲突
    存在版本冲突时,直接通过包管理的版本强制规则把整个项目依赖树里的stylis锁定到4.x稳定版(推荐4.2.0,兼容性最好):
    • npm用户在package.json中添加如下配置:
      "overrides": {
        "stylis": "4.2.0"
      }
      
    • yarn用户在package.json中添加如下配置:
      "resolutions": {
        "stylis": "4.2.0"
      }
      
    • pnpm用户在package.json中添加如下配置:
      "pnpm": {
        "overrides": {
          "stylis": "4.2.0"
        }
      }
      
    配置完成后,删除项目下的node_modules文件夹和对应的锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml),重新执行依赖安装命令即可。
  • 第三步排查测试环境模块解析问题
    如果是运行单元测试(jest/vitest)时抛出的错误,大概率是测试运行时的模块解析规则有问题:
    可以先在测试文件的最顶部加一行代码打印stylis的实际加载路径:console.log(require.resolve('stylis')),确认加载的文件路径是不是你预期的node_modules下的正确版本。
    常见配置错误包括:jest的transformIgnorePatterns规则没有包含stylis,导致esm格式的stylis没有被正确转译;或者webpack/vite的别名配置错误,把stylis指向了错误的文件。
  • 极端损坏场景修复
    如果前面步骤都没解决,检查本地包管理工具缓存是否损坏,执行对应清缓存命令:
    • npm:npm cache clean --force
    • yarn:yarn cache clean
    • pnpm:pnpm store prune
      清完缓存后重新安装依赖即可。

内容的提问来源于stack exchange,提问作者Marwan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:36:08