Node.js 应用程序的 firebase deploy 命令导致错误:`runtime` field is required but was not found in firebase.json

Posted

技术标签:

【中文标题】Node.js 应用程序的 firebase deploy 命令导致错误:`runtime` field is required but was not found in firebase.json【英文标题】:firebase deploy command for Node.js application results in Error: `runtime` field is required but was not found in firebase.json 【发布时间】:2021-01-10 09:29:13 【问题描述】:

我正在尝试在 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 上,不显示文字图片。将文本复制到问题中并设置格式,以便于阅读、复制和搜索。 【参考方案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,尽管文档中没有提到这一点。

以上是关于Node.js 应用程序的 firebase deploy 命令导致错误:`runtime` field is required but was not found in firebase.json的主要内容,如果未能解决你的问题,请参考以下文章

使用 node.js 和 react.js 客户端启动一个 firebase 功能项目

如何通过 firebase 托管在 firebase 上托管 node.js Web 应用程序(包含多个文件夹)?

在 Firebase 上部署使用 node.js 服务器的应用程序

如何为特定令牌、颤振、firebase 消息传递和 node.js 发送通知

无法使用 Firebase 管理员在 Node.js 的 Google 存储对象上设置元数据

我可以使用 React-native、firebase 和 node js 创建一个应用程序吗?