Firebase Cloud Functions加载request模块失败,寻求解决办法
我帮你梳理下问题根源:你遇到的Cannot find module 'request',核心原因是虽然functions/node_modules里存在request模块,但它没有被添加到functions/package.json的依赖列表中。Firebase Cloud Functions无论是本地运行还是云端部署,都是依靠package.json里的配置来管理依赖的——部署时Firebase会忽略本地的node_modules文件夹,完全根据package.json重新安装依赖;本地运行时也需要package.json的记录来正确加载模块,单纯有node_modules文件夹根本没用。
给你一步步的解决步骤:
首先确保你在
functions目录下操作(这步很关键,别跑到项目根目录去了):cd functions重新安装request模块,同时把它添加到package.json的依赖列表中(npm 5+之后
--save是默认行为,但加上更稳妥):npm install request --save打开
functions/package.json检查dependencies部分,现在应该能看到类似这样的内容:"dependencies": { "firebase-admin": "^5.7.0", "firebase-functions": "^0.8.0", "request": "^2.88.2" }最后重新运行或部署你的函数:
- 本地调试:执行
npm run serve - 部署到云端:执行
npm run deploy
- 本地调试:执行
补充说下你之前操作无效的原因:你可能是在项目根目录安装的request,或者在functions目录安装时没加--save,导致functions目录的package.json完全没记录这个依赖。要知道functions是一个独立的Node.js子项目,它的依赖只认自己目录下的package.json,根目录的配置对它来说完全不起作用。
内容的提问来源于stack exchange,提问作者user8951490

