部署在Vercel的Express应用缺失依赖:Firebase Storage模块报错
Firebase Storage API部署Vercel报错:找不到模块'../deps/dicer/lib/Dicer'
问题描述
我给Firebase Storage里的文件做了个简易API,部署到Vercel后日志报firebase/storage相关错误,提示找不到模块../deps/dicer/lib/Dicer,还问是不是没把它加到package.json的dependencies里。这是我第一次在Vercel部署用Firebase的Serverless Express应用,没处理过这种异常,求解决办法。
我的代码端点&导入部分:
const app = require('express')(); const cors = require('cors'); const firebaseApp = require('./config/firebase'); const { getDownloadURL, getStorage, listAll, ref } = require('firebase/storage'); require('dotenv').config(); const storage = getStorage(firebaseApp); app.use(cors()); app.get("/img", async (req, res) => { const storageRef = ref(storage, "img"); const images = await listAll(storageRef); const imgs = await Promise.all( images.items.map((item) => getDownloadURL(item)) ); return res.status(200).json({ ok: true, message: "Images fetched successfully", data: imgs, }); });
vercel.json配置:
{ "version": 2, "builds": [ { "src": "index.js", "use": "@now/node" } ], "routes": [ { "src": "/(.*)", "dest": "index.js" } ] }
解决办法
1. 清理依赖重新安装
- 删除本地的
node_modules文件夹和package-lock.json(或yarn.lock) - 执行
npm install(或yarn install)重新拉取所有依赖 - 检查
package.json,确保firebase、firebase/storage这些依赖都在dependencies字段里,别放到devDependencies里——Vercel部署时默认不会安装devDependencies里的包
2. 统一Firebase依赖版本
不同版本的firebase和firebase/storage可能存在依赖兼容问题,导致某些子依赖缺失:
- 执行
npm list firebase firebase/storage查看当前版本 - 如果版本不一致,升级到最新稳定版:
npm install firebase@latest --save - 或者指定一个兼容的固定版本,比如
npm install firebase@9.23.0 --save(版本号可按需调整)
3. 更新Vercel构建配置
你用的@now/node是旧版Vercel Node构建器,现在官方推荐用@vercel/node,同时可以强制指定安装命令确保依赖完整:
修改vercel.json为:
{ "version": 2, "builds": [ { "src": "index.js", "use": "@vercel/node" } ], "routes": [ { "src": "/(.*)", "dest": "index.js" } ], "installCommand": "npm install" }
4. 手动添加dicer依赖
如果上面的方法都没解决,直接把缺失的dicer包加到依赖里:
- 执行
npm install dicer --save - 重新部署到Vercel,此时构建环境会自动安装这个包
内容的提问来源于stack exchange,提问作者EmmanCanVaz_95
相关产品推荐
相关产品推荐

