Nuxt3集成Cypress时vite-plugin-istanbul引发SSR window未定义错误求助
解决方案
问题根源在于vite-plugin-istanbul默认会对服务端和客户端代码都进行插桩,而服务端渲染(SSR)环境不存在window对象,导致报错。要解决这个问题,只需让插件仅作用于客户端代码即可。
修改你的nuxt.config.ts配置,将istanbul插件放到vite.client.plugins下,确保只在客户端构建流程中启用:
import istanbul from 'vite-plugin-istanbul' export default defineNuxtConfig({ // 其他原有配置 vite: { vue: { template: { transformAssetUrls: true } }, client: { plugins: [ istanbul({ exclude: ['node_modules', 'test/', 'coverage/', '.nuxt/server/'], extension: ['.js', '.ts', '.vue'], cypress: true }) ] } } })
额外说明
vite.client配置块专门用于客户端构建的Vite选项,这里添加的插件只会影响客户端代码的打包,不会触及服务端渲染的代码。- 额外把
.nuxt/server/加入排除列表,可进一步避免误处理服务端相关文件。 - 调整后,Cypress测试运行时会正常收集客户端代码的覆盖率数据,同时不会影响SSR功能的运行。
内容的提问来源于stack exchange,提问作者Vaibhav Rathore
相关产品推荐
相关产品推荐

