(瓜是长大在营养肥料里的最甜,天才是长在恶性土壤中的最好。——培根)
unsupported architecture
在mac的m系列芯片中容易出现此类问题,因为m系列是arm64的芯片架构,而有些nodejs版本或npm包的芯片架构是x86的,所以导致此类问题频发
但随着nodejs新版本对m系列芯片的支持,npm生态的工具包也逐渐都兼容了arm64架构,但部分比较旧的没有兼容,依然会出现此问题,唯一的解决方案是使用兼容arm64架构的包或使用较新的nodejs版本
问题场景
从windows电脑换成mac后,启动nodejs服务出现此类问题,但nodejs使用的是14版本,已经支持了mac的m系列芯片,于是开始排查npm包的问题
- 首先执行没有任何依赖的js文件,发现可以正常启动,那么就可以确定一定是npm包的问题
- 在传统的http服务下,先从各个控制层(controller)排查,每次只启用一个controller,缩小范围
- 在定位到有问题的控制层后,开始排查业务层(service),每次只启用一个service,缩小范围
- 在定位到有问题的业务层后,开始排查该业务层的包依赖,每次只启用一个包,缩小范围
- 最后定位到有问题的npm包,到npm或github中查找该包的解决方案(升级版本或其他),如果无法解决该包的问题,则使用其他支持arm64架构的包进行解决即可
ffprobe-static
比如这个包的3.0.0版本就不支持arm64芯片,升级为3.1.0后解决