vitepress 打包 echarts 时 zrender 报错
问题描述
vitepress@1.0.1
使用了echart@5.5.0
会在构建时报错
打包时,发现如下报错:
txt
TypeError: Cannot read properties of undefined (reading 'indexOf')
at file:///D:/www.zichin.com/blog/node_modules/.pnpm/zrender@5.5.0/node_modules/zrender/lib/core/env.js:36:28
依赖包版本如下:
sh
npm ls
blog@ D:\www.zichin.com\blog
├── echarts@5.5.0 -> .\node_modules\.pnpm\echarts@5.5.0\node_modules\echarts
├── vitepress@1.0.1 -> .\node_modules\.pnpm\vitepress@1.0.1_@algolia+client-search@4.22.1_sass@1.72.0_search-insights@2.13.0\node_modules\vitepress
├── vue@3.4.21 extraneous -> .\node_modules\.pnpm\vue@3.4.21\node_modules\vue
详细报错如下:
txt
> vitepress build docs --minify
vitepress v1.0.1
⠦ building client + server bundles...
(!) Some chunks are larger than 600 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ building client + server bundles...
⠏ rendering pages...TypeError: Cannot read properties of undefined (reading 'indexOf')
at file:///D:/www.zichin.com/blog/node_modules/.pnpm/zrender@5.5.0/node_modules/zrender/lib/core/env.js:36:28
at ModuleJob.run (node:internal/modules/esm/module_job:218:25)
at async ModuleLoader.import (node:internal/modules/esm/loader:329:24)
at async loadPage (file:///D:/www.zichin.com/blog/docs/.vitepress/.temp/pageviews.B3t592Xy.js:1124:18)
at async Object.go (file:///D:/www.zichin.com/blog/docs/.vitepress/.temp/pageviews.B3t592Xy.js:1113:5)
at async render (file:///D:/www.zichin.com/blog/docs/.vitepress/.temp/app.js?t=1711446838791:5030:3)
at async renderPage (file:///D:/www.zichin.com/blog/node_modules/.pnpm/vitepress@1.0.1_@algolia+client-search@4.22.1_sass@1.72.0_search-insights@2.13.0/node_modules/vitepress/dist/node/serve-C_2bYS0g.js:46514:19)
at async pMap.concurrency (file:///D:/www.zichin.com/blog/node_modules/.pnpm/vitepress@1.0.1_@algolia+client-search@4.22.1_sass@1.72.0_search-insights@2.13.0/node_modules/vitepress/dist/node/serve-C_2bYS0g.js:46758:11)
at async file:///D:/www.zichin.com/blog/node_modules/.pnpm/vitepress@1.0.1_@algolia+client-search@4.22.1_sass@1.72.0_search-insights@2.13.0/node_modules/vitepress/dist/node/serve-C_2bYS0g.js:2614:20
✖ rendering pages...
build error:
TypeError: Cannot read properties of undefined (reading 'indexOf')
at file:///D:/www.zichin.com/blog/node_modules/.pnpm/zrender@5.5.0/node_modules/zrender/lib/core/env.js:36:28
at ModuleJob.run (node:internal/modules/esm/module_job:218:25)
at async ModuleLoader.import (node:internal/modules/esm/loader:329:24)
at async loadPage (file:///D:/www.zichin.com/blog/docs/.vitepress/.temp/pageviews.B3t592Xy.js:1124:18)
at async Object.go (file:///D:/www.zichin.com/blog/docs/.vitepress/.temp/pageviews.B3t592Xy.js:1113:5)
at async render (file:///D:/www.zichin.com/blog/docs/.vitepress/.temp/app.js?t=1711446838791:5030:3)
at async renderPage (file:///D:/www.zichin.com/blog/node_modules/.pnpm/vitepress@1.0.1_@algolia+client-search@4.22.1_sass@1.72.0_search-insights@2.13.0/node_modules/vitepress/dist/node/serve-C_2bYS0g.js:46514:19)
at async pMap.concurrency (file:///D:/www.zichin.com/blog/node_modules/.pnpm/vitepress@1.0.1_@algolia+client-search@4.22.1_sass@1.72.0_search-insights@2.13.0/node_modules/vitepress/dist/node/serve-C_2bYS0g.js:46758:11)
at async file:///D:/www.zichin.com/blog/node_modules/.pnpm/vitepress@1.0.1_@algolia+client-search@4.22.1_sass@1.72.0_search-insights@2.13.0/node_modules/vitepress/dist/node/serve-C_2bYS0g.js:2614:20
ELIFECYCLE Command failed with exit code 1.
* 终端进程“C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command pnpm run docs:build”已终止,退出代码: 1。
* 终端将被任务重用,按任意键关闭。
问题原因
- zrender 版本过低,需要升级到最新版本。
- vitepress 在构建的时候会检查,语法错误
解决方案
- 升级 zrender 版本到最新版本
- 升级 zrender 之后若还有问题, 可以在
docs\.vitepress\config.mjs
中添加如下配置
js
export default defineConfig((ctx) => {
// 兼容 echarts@5.5.0 打包报错, 判断 navigator 是否存在,不存在则赋予一个假值
globalThis.navigator ??= {};
globalThis.navigator.userAgent ??= "Node.js";
return {
lang: "zh-CN",
title: "🇨🇳子卿全栈系列 💯",
// 其他代码
};
});