【问题标题】:firebase deploy command for Node.js application results in Error: `runtime` field is required but was not found in firebase.jsonNode.js 应用程序的 firebase deploy 命令导致错误:`runtime` field is required but was not found in firebase.json
【发布时间】:2024-01-24 05:36:01
【问题描述】:

我正在尝试在 firebase 中部署我的 Node.js 应用程序,但是当我运行命令时,它会导致错误 Error: runtime field is required but was not found in firebase.json.

我尝试运行命令 firebase serve --only functions,hosting 并且在本地一切正常,因此我想部署并向我的同事提供链接以进行用户测试,但我无法使用 firebase deploy 命令执行此操作。

我尝试将命令添加到我的firebase.json 文件中,但仍然没有成功。这是我原来的firebase.json 文件:

{
  "hosting": {
    "public": "public",
    "rewrites": [
      {
        "source": "**",
        "function": "app"
      }
    ]
  }
}

收到错误后我改成这样:

{
  "hosting": {
    "public": "public",
    "runtime": "nodejs10",
    "rewrites": [
      {
        "source": "**",
        "function": "app"
      }
    ]
  }
}

仍然收到错误,我有点困惑我需要在哪里添加命令"runtime": "nodejs10",。我尝试查找但找不到任何关于类似问题的相关文章,请任何人帮助我。

【问题讨论】:

  • 在 Stack Overflow 上,不显示文字图片。将文本复制到问题中并设置格式,以便于阅读、复制和搜索。

标签: node.js firebase google-cloud-functions firebase-hosting firebase-cli


【解决方案1】:

要设置运行时,请在初始化期间在您的函数/目录中创建的 package.json 文件的 engines 字段中设置版本。例如,要仅使用版本 10,请在 package.json 中编辑此行:

"engines":{"node":"10"}

引擎字段是必需的;它必须指定受支持的 Node.js 版本之一,以便您部署和运行函数。目前,firebase init 函数将此字段设置为节点 10

【讨论】:

    【解决方案2】:

    错误消息说将其添加到“functions”部分。您将其添加到“托管”部分,这将不起作用。运行时选择适用于 Cloud Functions,而不是 Firebase 托管。它们是具有不同配置的不同产品。

    该消息对于要添加的内容也不完全准确。

    将运行时添加到documentation 中讨论的函数部分:

    {
      "functions": {
        "engines": {"node": "10"}
      }
    }
    

    【讨论】:

    • 文档说将"engines": ... 放入您的函数项目的package.json或者您可以将{"functions "{"runtime": "nodejs14"}} 添加到您的firebase.json,尽管文档中没有提到这一点。