【问题标题】:Firebase deploy error on TravisTravis 上的 Firebase 部署错误
【发布时间】:2016-03-23 08:41:55
【问题描述】:

我正在尝试使用 Travis 部署到 Firebase 托管,但出现以下错误:

$ npm install -g firebase-tools
$ firebase --non-interactive deploy --token "${FIREBASE_TOKEN}"
Error: There was an error loading firebase.json:
undefined is not a function

该错误没有帮助,它看起来像是firebase-tools 中的一个错误,或者我以一种意想不到的方式调用了它。您认为可能有什么问题或我应该尝试调查什么?

我的firebase.json 看起来像:

{
  "firebase": "myApp",
  "public": "./dist",
  "ignore": [
    "firebase.json",
    "**/.*",
    "**/node_modules/**"
  ],
  "rewrites": [
    {
      "source": "**",
      "destination": "/index.html"
    }
  ],
  "rules": "./rules.bolt"
}

firebase.json 位于根目录中,并且在本地运行相同的命令也可以正常工作。

这是我完整的.travis.yml

install:
  - npm install
  - bower install
script:
  - gulp
after_success:
  - npm install -g firebase-tools
  - firebase --non-interactive deploy --token "${FIREBASE_TOKEN}"
cache:
  directories:
  - node_modules
  - bower_components

我清除了 Travis 上的缓存并确认它正在运行 firebase-tools 版本 2.2.0

【问题讨论】:

  • 我认为这是一个 Bolt 错误。当您在本地编译 Bolt 规则时会发生什么?
  • 是的,你是对的。我从firebase.json 中删除了"rules": "./rules.bolt",它在Travis 上部署得很好。我尝试添加npm install -g firebase-bolt,但它仍然给出了同样的错误。它在本地工作正常...firebase-bolt < rules.bolt > rules.json 工作正常。 firebase deploy 在本地运行时似乎正确部署了我的螺栓规则。感谢您的建议:) 绝对是正确的方向。我不确定解决方案是什么...我可以手动部署规则,所以还不错。
  • 你的节点版本是多少?本地和 cor 的 Travis 盒子就是。
  • 啊,是的,谢谢!我想我有一段时间没有更新,也没有任何其他问题。本地是0.12.7。我没有为 Travis 指定任何内容,所以它选择了 0.10.36。将language: node_jsnode_js: - "4.1" 添加到.travis.yml,效果很好。如果您愿意,请随时添加答案,我会接受。
  • 太棒了!我也添加了一个更好解释的答案。

标签: firebase travis-ci firebase-security firebase-tools


【解决方案1】:

使用节点0.12或以上。

虽然 Firebase CLI 和 Bolt 编译器都使用节点 0.10+,但使用 Firebase CLI 编译 Bolt 规则需要节点 0.12+。

这是因为在节点 0.12 之前,无法同步调用外部模块,而 Firebase CLI 需要它来编译 Bolt 规则。

为那些必须使用 node.10.x 的人解决 - 直接使用 firebase-bolt:

$ firebase-bolt rules.bolt  # creates rules.json

在 firebase.json 中使用:“rules”:“./rules.json”

【讨论】:

  • 解决那些不得不使用 node.10.x - 直接使用 firebase-bolt: ``` $ npm install -g firebase-bolt $ firebase-bolt rules.bolt # 创建 rules.json在 firebase.json 中使用: "rules": "./rules.json" ```
【解决方案2】:

为那些必须使用 node.10.x 的人解决 - 直接使用 firebase-bolt:

$ firebase-bolt rules.bolt  # creates rules.json

在 firebase.json 中使用:“rules”:“./rules.json”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多