【发布时间】: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_js和node_js: - "4.1"添加到.travis.yml,效果很好。如果您愿意,请随时添加答案,我会接受。 -
太棒了!我也添加了一个更好解释的答案。
标签: firebase travis-ci firebase-security firebase-tools