Firebase部署Node.js+MongoDB项目仅显欢迎页及部署报错求助
问题排查与解决方案
问题1:部署成功但仅显示Firebase默认欢迎页
该问题由3个常见原因导致,按优先级修改即可:
- 删掉
app.js末尾的app.listen(3000, function() {...})代码段:Firebase云函数不需要监听本地端口,该写法仅适用于本地开发调试 - 在
app.js的最后一行添加导出语句,让Firebase能识别到你定义的服务:exports.app = functions.https.onRequest(app); - 检查项目根目录的
public文件夹,删除里面默认生成的index.html文件:Firebase会优先加载静态目录下的index.html,导致你的路由逻辑不生效 - 确认你当前的
app.js代码是存放在functions/index.js文件中,和报错日志指向的入口文件一致
问题2:部署functions时报错
错误分为代码规范检查失败、预部署脚本不兼容Windows系统两类,分别处理:
1. ESLint规范报错
日志提示38个错误可自动修复,进入functions目录,执行以下命令即可自动修复绝大多数格式问题:
npx eslint . --fix
剩余几个无法自动修复的问题手动调整即可:
'ejs' is assigned a value but never used:将const ejs = require("ejs");修改为require("ejs");,不需要赋值变量即可正常使用ejs模板- 行超长报错:可以在
.eslintrc.js配置文件中调整max-len规则的阈值,或者将长文本常量拆分为多行拼接
2. 预部署脚本ENOENT报错
你使用的是Windows系统,firebase.json中默认的预部署脚本用的是类Unix系统的变量写法$RESOURCE_DIR,Windows无法识别,两种解决方案二选一:
- 方案一:修改
firebase.json的functions配置,把$RESOURCE_DIR改为%RESOURCE_DIR% - 方案二:直接删除
predeploy配置段,跳过每次部署前的lint检查,修改后配置如下:"functions": { "source": "functions" }
额外注意事项
- 替换MongoDB连接字符串中的
<password>为你真实的数据库密码,同时确认MongoDB Atlas的网络访问规则允许所有IP访问(测试阶段建议开启,避免连接失败) - 所有依赖包(express、mongoose、ejs等)都要在
functions目录下执行npm install安装,不要安装在项目根目录,否则部署后会报依赖缺失错误
内容的提问来源于stack exchange,提问作者Soniya Jaiswal
相关产品推荐
相关产品推荐

