解决 Serverless 部署时产生的 bcrypt invalid ELF header 问题
昨天开始折腾阿里云 Serverless,打算把后端应用部署到「函数计算」上去。碰到一个问题,运行时报错:
...
/code/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: invalid ELF header"
...
发生什么事了?原来是,每次 npm 安装这个包后,都会对 bcrypt 进行编译,然而不同环境下编译的结果并不通用。你在 Windows 或 macOS 环境下编译后,node_modules 直接上传到「函数计算」的 linux 环境,就不能用。怎么办,又不能在云端 npm install
,非常头疼,解决方法想不到也搜不到。
刚才终于解决了。没有解决问题,而是解决了产生问题的东西「bcrypt」。方法就是用 bcryptjs 直接无缝替换,除了引用,连代码都不用改。