Angular 编译后CSS样式丢失问题排查

in 工作记录 with 0 comment

参考文章:

几种npm install 的区别
全局 Angular CLI 版本大于本地版本
fsevents 是什么 ?

手头有个Angular8的项目,在我本地编译启动后,发现有些样式错版了。

对比了生产环境此元素的CSS,发现是Dev环境下缺失了一个CSS导致的。

看上去就是个普通的icon样式。
image.png

分析

因为代码是在生产环境正常工作的,我也没有任何改动,首先怀疑是编译的问题。

简单搜索后,多数反馈是 Angular-cli 版本错误的问题。

查看本地版本为:
Angular-cli 8.3.0,而此项目的Redeme中也表述为8版本。

为了排除是否是Angular-cli 的问题,我还是将Angular-cli的版本更新到了最新,结果项目无法正常启动。

这也正常,因为这个项目是基于8开发的。

陷入僵局, 尝试重写install 和 编译项目,之前看到有些警告,因为没有影响项目启动,忽略了这些。

警告1

首先是 全局Angular-cli版本不一致,这个应该没有影响,因为编译用的8版本,问题不大。
image.png

警告2

SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\webpack-dev-server\node_modules\fsevents)
image.png

fsevents, wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}

看上去和操作系统有关,简单查看了fsevents,fsevents就是MacOS特有的东西,顺带找到了解决Windows上解决问题的办法。

解决

npm install --no-optional

--no-optional 忽略可选依赖项

optionalDependencies,表示可选依赖项,即使安装失败也不会导致项目运行失败的依赖项。

但是这里忽视这个问题导致了一些CSS的失效,需要 install 的时候加上 --no-optional。

重新 install后,可以正常工作了,问题解决。