当部署以下hello-world等效代码时,我得到最后显示的错误: -
$ ls -lR
.:
total 8
-rw-r--r-- 1 hgarg hgarg 3 Aug 29 14:55 firebase.json
drwxr-xr-x 2 hgarg hgarg 4096 Aug 29 11:56 functions
./functions:
total 4
-rw-r--r-- 1 hgarg hgarg 1678 Aug 29 11:56 index.js
firebase.json看起来像这样: -
{}
和index.json是这样的: -
'use strict';
const functions = require('firebase-functions');
exports.search = functions.https.onRequest((req, res) => {
if (req.method === 'PUT') {
res.status(403).send('Forbidden!');
}
var category = 'Category';
console.log('Sending category', category);
res.status(200).send(category);
});
但部署失败: -
$ firebase deploy
Error: Cannot understand what targets to deploy. Check that you specified valid targets if you used the --only or --except flag. Otherwise, check your firebase.json to ensure that your project is initialized for the desired features.
$ firebase deploy --only functions
Error: Cannot understand what targets to deploy. Check that you specified valid targets if you used the --only or --except flag. Otherwise, check your firebase.json to ensure that your project is initialized for the desired features.
答案 0 :(得分:12)
最好使用默认选项预填充firebase。我选择我只想使用主机firebase.json应该使用默认主机选项创建。
{
"hosting": {
"public": "public"
}
}
或者您尝试再次运行
firebase init
。
答案 1 :(得分:7)
面临类似的问题。在firebase.json文件中(在托管参数中),我们必须提供我们要部署的目录的名称(在我的情况下,我已经在目录中,我想部署,因此我把“。”放在托管中规格)。它解决了我的错误。
{
"hosting": {
"public": ".",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}
答案 2 :(得分:1)
Firebase会读取package.json以读取函数目标的详细信息。我的项目目录中缺少此文件,因为我在执行 init 后移动了文件。
在其中创建一个干净的目录并执行 firebase init函数,创建了所有必需的文件和文件夹以便开始。
答案 3 :(得分:1)
我认为您缺少以下任何一项内容 -
a)你应该在index.html所在的主项目之外运行firebase init。 b)按空格运行firebase init后选择托管选项 c)请提供包含index.html的文件夹名称。
您的项目将会正常运行。
答案 4 :(得分:0)
我在运行时遇到此问题:
firebase emulators:exec --only firestore 'npm tst'
问题在于firebase.json
上必须具有所需仿真器的属性。因此,以我为例,我在"firestore": {}
上添加了firebase.json
并开始工作。