修改Firebase Emulators的默认侦听IP

本文教导如何在Firebase中修改firebase.json配置,使emulators在0.0.0.0上监听,以便Docker环境下通过端口映射访问。详述了各个模块的配置细节,并链接至官方文档提供完整教程。

firebase emulators:start 默认侦听在localhost,如果使用Docker则无法通过端口映射进行访问。

我们可以修改firebase.json文件让emulators侦听在其它IP上

"emulators": {
    "functions": {
      "port": 5001,
      "host": "0.0.0.0"
    },
    "firestore": {
      "port": 8080
    },
    "database": {
      "port": 9000,
      "host": "0.0.0.0"
    },
    "hosting": {
      "port": 5000
    }
  }

具体参考官方文档:

安装、配置和集成本地模拟器套件  |  Firebase Documentation (google.com) 

### 解决 `npm ERR! missing script: serve` 和 `firebase emulators:start command not found` 问题 #### 1. **分析问题** 用户报告了两个主要问题: - `npm ERR! missing script: serve` 表明项目中的 `package.json` 文件未定义名为 `serve` 的脚本[^4]。 - `firebase emulators:start command not found` 提示系统无法识别 `firebase` 命令,通常是由于 Firebase CLI 未正确安装或环境变量未配置所致[^3]。 --- #### 2. **解决 `npm ERR! missing script: serve`** ##### 检查 `package.json` 配置 打开项目的根目录下的 `package.json` 文件,查找 `scripts` 字段。如果不存在 `serve` 脚本,请手动添加以下内容: ```json "scripts": { "serve": "firebase emulators:start --only functions" } ``` 保存文件后,再次运行命令以验证是否解决问题。 ##### 确保依赖项已正确安装 某些情况下,即使脚本存在,也可能因缺失必要的依赖而导致错误。建议清理并重新安装依赖项: ```bash rm -rf node_modules package-lock.json npm install ``` --- #### 3. **解决 `firebase emulators:start command not found`** ##### 安装 Firebase CLI 如果系统中尚未安装 Firebase CLI,可以通过以下命令进行全局安装: ```bash npm install -g firebase-tools ``` 完成后,验证安装是否成功: ```bash firebase --version ``` 如果返回版本号,则表明安装成功。 ##### 配置环境变量 如果仍提示 `command not found`,则可能是环境变量未正确设置。按照以下步骤操作: ###### 对于 macOS 用户 1. 使用 Homebrew 安装 Node.js(确保包含 Firebase CLI): ```bash brew install node ``` 2. 添加 Node.js 的二进制路径到系统的 `$PATH` 中。编辑 `.zshrc` 文件: ```bash echo 'export PATH="/usr/local/opt/node/bin:$PATH"' >> ~/.zshrc ``` 3. 应用更改: ```bash source ~/.zshrc ``` ###### 查询实际安装路径 如果不确定 Firebase CLI 的具体安装位置,可以使用以下命令查询: ```bash which firebase ``` 或将路径替换为实际值后加入 `.zshrc` 文件: ```bash echo 'export PATH="/opt/homebrew/Cellar/firebase-tools/<version>/bin:$PATH"' >> ~/.zshrc source ~/.zshrc ``` --- #### 4. **综合验证** 完成以上步骤后,分别运行以下命令以验证问题是否解决: - 测试 `npm run serve` 是否正常工作。 - 测试 `firebase emulators:start` 是否能够启动模拟器。 --- ### 示例代码调整后的 `package.json` 以下是经过修正后包含 `serve` 脚本的一个完整示例: ```json { "name": "functions", "description": "Cloud Functions for Firebase", "scripts": { "serve": "firebase emulators:start --only functions", "shell": "firebase functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "engines": { "node": "18.x" }, "main": "index.js", "dependencies": { "firebase-admin": "^11.5.0", "firebase-functions": "^4.2.0" } } ``` --- ### 注意事项 - 如果仍然报错,请进一步排查是否存在拼写错误或者路径问题。 - 确认已全局安装 Firebase 工具链 (`firebase-tools`),并通过 `firebase --version` 验证其可用性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值