Google Cloud Functions部署报错:找不到'mkdirp-promise'模块
解决Google Cloud Functions部署时"Cannot find module 'mkdirp-promise'"的错误
这问题我之前帮人排查过好多次,本质就是依赖声明遗漏导致的。你的代码里调用了mkdirp-promise这个模块,但部署Cloud Functions时,它只会根据你项目根目录的package.json里的dependencies列表来安装依赖——没列进去的模块自然找不到。
具体解决步骤
- 打开你函数项目里的
package.json文件,找到"dependencies"区块 - 添加
"mkdirp-promise": "^5.0.1"(版本号可以用最新稳定版,npm官网能查到),比如:{ "name": "image-converter-function", "dependencies": { "@google-cloud/storage": "^7.0.0", "mkdirp-promise": "^5.0.1" } } - 本地先运行
npm install确保依赖安装完整,然后重新部署:
(把gcloud functions deploy imageToJPG --runtime nodejs20 --trigger-resource YOUR_BUCKET_NAME --trigger-event google.storage.object.finalizenodejs20换成你用的Node.js版本,触发器参数根据你的需求调整)
你可能的操作疏漏
你从GitHub复制示例代码时,大概率只复制了index.js,没把示例配套的package.json一起拿过来——很多示例的依赖都是写在package.json里的,光拿业务代码肯定会缺依赖。下次复制示例项目时,记得把整个项目目录的文件都同步过来,尤其是package.json和package-lock.json。
同类参考示例
Google Cloud官方的Node.js Functions示例里有不少类似的图像处理场景:
- 云存储触发的图片压缩/格式转换函数:这类示例会用到
sharp(图片处理库)、@google-cloud/storage(云存储SDK),它们的package.json都会清晰列出所有依赖 - 文件系统操作相关的函数:如果涉及创建目录、读写文件,官方示例会用标准的依赖管理方式,你可以参考它们的项目结构来规范自己的代码
另外,部署前一定要做个小检查:把代码里用到的所有第三方模块列出来,对照package.json里的依赖项,确保没有遗漏——这是Cloud Functions部署的基础要求,少一个都可能报错。
内容的提问来源于stack exchange,提问作者Marcos Galaviz
相关产品推荐
相关产品推荐

