昨天開始折騰阿里雲 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 直接無縫替換,除了引用,連代碼都不用改。