Vuepress2 打包报错 TypeError: Invalid value used as weak map key

2022年7月19日
大约 2 分钟

Vuepress2 打包报错 TypeError: Invalid value used as weak map key

发生问题背景

搭建Vuepress博客弄程序员专属网站系列技术文章和Java面试题,通过自己开发的代码和之前积攒的小程序面试题生成大量md文件,本地运行也很正常,等待一切都准备就绪,使用docs:build命令打包,结果就发生了下面的错误信息,打包失败。

Use of eval is strongly discouraged, as it poses security risks and may cause issues with minification
| Compiling with vite
(!) Some chunks are larger than 500 KiB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/guide/en/#outputmanualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
  √ Compiling with vite - done
  × Rendering pages - failed
  TypeError: Invalid value used as weak map key
  at WeakMap.set (<anonymous>)
  at normalizePropsOptions (F:\yoodb\node_modules\@vue\runtime-core\dist\runtime-core.cjs.prod.js:3179:15)
  at createComponentInstance (F:\yoodb\node_modules\@vue\runtime-core\dist\runtime-core.cjs.prod.js:5695:23)
  at renderComponentVNode (F:\yoodb\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:168:22)
  at Object.ssrRenderComponent (F:\yoodb\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:605:12)
  at _sfc_ssrRender$3_ (F:\yoodb\yoodb\.vuepress\.temp\.server\app.js:37228:24)
  at renderComponentSubTree (F:\yoodb\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:250:13)
  at renderComponentVNode (F:\yoodb\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:185:16)
  at renderVNode (F:\yoodb\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:292:22)
  at renderComponentSubTree (F:\yoodb\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:256:13)

分析原因

通过网上搜索资料发现md文件中不能使用<font>一段描述</font>这样类似的font标签,否则会导致编译不通过。

解决办法

可以将font标签修改为<div>或者<p>标签,比如

<div style="color: #000000">一段描述</div>

效果和font标签一样。

md文件中存在类似如下截图的特殊字符也会导致打包失败。

图

其他标签也有可能出现上述情况,md文件比如<template>也会造成这种打包失败的情况。