Macbook M1部署AWS Serverless时esbuild报错的原因咨询
esbuild平台不匹配错误的原因分析(MacBook M1 + Serverless AWS场景)
核心本质
esbuild是基于原生代码开发的构建工具,它需要与当前运行环境的CPU架构完全匹配的二进制可执行文件才能工作。MacBook M1采用arm64架构,传统Intel Mac为x64架构,两种架构对应的esbuild包分别是esbuild-darwin-arm64和esbuild-darwin-64,二者无法交叉兼容。
直接触发原因
这个错误的核心诱因是安装esbuild时的CPU架构环境,与实际运行esbuild时的环境不一致,而Rosetta 2是导致这种不一致的关键:
- Rosetta 2是苹果提供的x64转arm64转译工具,开启Rosetta 2的终端会让其中运行的程序(包括npm、node)识别当前环境为x64架构;关闭Rosetta 2的终端则会识别为原生arm64架构。
- 若在开启Rosetta 2的终端用npm安装esbuild,npm会下载x64架构对应的
esbuild-darwin-64包;后续在原生arm64终端运行Serverless/Node调用esbuild时,程序会要求arm64架构的包,进而触发不匹配错误。 - 反之,在原生arm64终端安装
esbuild-darwin-arm64后,却在Rosetta 2终端运行调用,同样会出现该错误。
内容的提问来源于stack exchange,提问作者Ic3m4n
相关产品推荐
相关产品推荐

