wswmsword / postcss-mobile-forever

一款 PostCSS 插件,将固定尺寸的视图转为可跟随宽度变化而等比例伸缩的视图。To adapt different displays by one mobile viewport.
https://wswmsword.github.io/examples/mobile-forever/vanilla/
MIT License
325 stars 19 forks source link

使用了swiper的页面报错:[vite] Internal server error: [postcss] Cannot read properties of null (reading 'has') #59

Closed LUDA0831 closed 4 weeks ago

LUDA0831 commented 1 month ago

最新版使用了swiper的页面会报错

经过测试刚安装的4.2.2版本会报这个错误,示例项目里4.1.6版本没有这个问题.

报错在打包之后的314行,应该是containingBlockWidthDeclsMap这个属性没有判空.

image

wswmsword commented 1 month ago

感谢,我排除一下

wswmsword commented 4 weeks ago

请问能否提供一下输入输出或者一个能运行的项目包,我本地调试一下。

我看了一下这边逻辑,没找到原因,按照道理走到 314 行的时候应该是已经被赋值了,如果没有值的时候应该走不到第 314 行。这边 containingBlockWidthDeclsMap 不能单纯的判空,因为它是需要值来走后面逻辑的。

wswmsword commented 4 weeks ago

4.2.3 已修复,原因是引入了 swiper 的样式,其中包含 @font-face At 规则:

@font-face {
  font-family: 'swiper-icons';
  src: url('...');
  font-weight: 400;
  font-style: normal;
}

插件假定了 CSS 属性都是在 Rule 之下,没有考虑到 At Rule,而原先的 containingBlockWidthDeclsMap 只在 Rule 下面做了初始化,所以遇到 At 规则下有属性的时候可能报错。