07akioni / xicons

SVG Vue/React components integrated from fluentui-system-icons, ionicons, ant-design-icons, material-design-icons, Font-Awesome, tabler-icons and carbon icons. (Vue3, Vue2, React, SVG)
https://www.xicons.org/
1.27k stars 55 forks source link

`@vicons/utils` 依赖的 `css-render` 版本太低,在 Nuxt 中会产生 `window is not defined` 错误 #873

Open cssmagic opened 2 weeks ago

cssmagic commented 2 weeks ago

错误

一个 Nuxt 3 项目,在组件或 plugin 中存在以下代码:

import { Icon } from '@vicons/utils'

会得到以下错误:

 ERROR  window is not defined

  at Object.<anonymous> (node_modules/.pnpm/css-render@0.13.9/node_modules/css-render/lib/mount.js:8:1)
  at ...

分析

查看引发错误的 css-render/lib/mount.js 的文件,存在 if (window) { ... } 这样的代码。可以确定这个错误确实是由 css-render 这个包引起的。

(到 GitHub 查看 这个文件的最新代码已经修了 “在 Node 环境下报错” 的问题。)

这个包的引入原因如下:

@vicons/utils 0.1.4
└─┬ @xicons/utils 0.1.4
  └── css-render 0.13.9

解决方案

目前 css-render 已经升级到 0.15.x 版本了,但 @vicons/utils 依赖的还是 0.13.x 版本。麻烦作者升级一下依赖 🙏

如果作者实在精力有限的话,给 css-render 发布一个 0.13.x 的 hotfix 版本也行 😭