Azure Functions 3部署Node.js项目sharp 0.29.3模块缺失报错如何解决
解决方案
问题根因
这个报错属于sharp库的平台二进制包不匹配问题:sharp是依赖平台原生编译模块的npm包,本地开发环境安装时默认只会下载适配本地系统的二进制文件,部署到Azure Functions的Windows 64位运行环境时,缺少对应平台的.node原生模块文件就会触发这个报错。
操作步骤
- 第一步:先删除项目本地的
node_modules目录和package-lock.json/yarn.lock锁文件,清除历史安装缓存 - 第二步:执行指定平台参数的安装命令,直接打包Azure运行环境需要的二进制文件:
npm install sharp@0.29.3 --platform=win32 --arch=x64
如果是用CI/CD工具自动构建部署,需要把上述参数加到构建流程的依赖安装步骤里,不要仅在本地安装后上传代码
- 第三步:确认Azure Functions运行时配置匹配:登录Azure门户进入对应函数应用的「配置」-「常规设置」页,确认「平台」选项已设置为64位,修改后重启应用生效
- 第四步:如果上述操作后仍报错,增加参数强制触发sharp的二进制下载逻辑:
npm install sharp@0.29.3 --platform=win32 --arch=x64 --ignore-scripts=false
注意事项
不要使用npm ci执行依赖安装,除非你已经确认锁文件中已经记录了正确的win32 x64平台的sharp二进制包信息,npm ci会默认忽略安装参数直接按照锁文件内容安装,仍会出现缺失问题。
内容的提问来源于stack exchange,提问作者Владислав Павленко
相关产品推荐
相关产品推荐

