尝试部署Firebase函数时出现ESLint错误 [英] ESLint error trying to deploy functions Firebase
问题描述
我尝试部署fireabase示例,但是当我尝试部署它时,CLI会启动错误:
I'm try to deploy fireabase example , but when I try to deploy it , CLI launches an error:
[CODE]
const functions = require('firebase-functions'); //to activate firebase functions
const admin = require('firebase-admin'); //to active firebase database permissions
admin.initializeApp(functions.config().firebase);
exports.addMessage = functions.https.onRequest((req, res) => {
// [END addMessageTrigger]
// Grab the text parameter.
const original = req.query.text;
// [START adminSdkPush]
// Push the new message into the Realtime Database using the Firebase Admin SDK.
admin.database().ref('/messages').push({original: original}).then(snapshot => {
// Redirect with 303 SEE OTHER to the URL of the pushed object in the Firebase console.
res.redirect(303, snapshot.ref);
});
// [END adminSdkPush]
});
[错误]
15:3 error Expected catch() or return promise/catch-or-return
15:69 error Each then() should return a value or throw promise/always-return
✖ 2 problems (2 errors, 0 warnings)
npm ERR! Darwin 17.4.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "--prefix" "/Users/user/test/functions" "run" "lint"
npm ERR! node v6.10.2
npm ERR! npm v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! functions@ lint: `eslint .`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the functions@ lint script 'eslint .'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the functions package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! eslint .
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs functions
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls functions
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /Users/eliassebastian/Developer/npm-debug.log
Error: functions predeploy error: Command terminated with non-zero exit code1
我看一下firebase提供的原始决赛这里
I take a look to original final provided by firebase here
我是Javascript和全世界的新人,所以我我真的迷失了这类消息。
I'm to new in Javascript and all this world, so I'm really lost with this type of messages.
我该怎样解决这个问题?
How can I solve this?
推荐答案
ESLint警告是合法的。要获得每个详细信息,您可以使用其唯一ID进行搜索。例如:
The ESLint warnings are legitimate. To get more detail on each one, you can search them using their unique id. For example:
15:3 error Expected catch() or return promise/catch-or-return
此处警告的ID为 promise / catch-or-return
。谷歌搜索eslint promise / catch-or-return找到 ESLint的插件警告:
The id of the warning here is promise/catch-or-return
. Googling for "eslint promise/catch-or-return" finds a plugin for ESLint that describes the warning as:
强制在未归还的承诺上使用catch()
Enforces the use of catch() on un-returned promises
你得到这个是因为你承诺从然后
返回,但你从来没有返回
或 catch
可能的错误。
You're getting this because you have a promise being returned from then
, but you never return
or catch
for possible errors.
第二个警告:
15:69 error Each then() should return a value or throw promise/always-return
来自同一个ESLint插件,如下所示:
comes from the same ESLint plugin, and is described like this:
返回每个then()以创建可读和可重用的Promise链。
Return inside each then() to create readable and reusable Promise chains.
它要求你在每个被调用的函数内返回一个值然后
,即使你没有什么特别的东西发送到下一个承诺链。
It's requiring you to return a value inside each function called by then
, even if you don't have anything special to sent to the next promise chain.
您可以解决这两个问题:
You can resolve both of these problems like this:
admin.database().ref('/messages').push({original: original}).then(snapshot => {
res.redirect(303, snapshot.ref);
return null;
}).catch(error => {
console.error(error);
res.error(500);
});
请注意,然后
块现在返回null , catch
用于从然后
返回的承诺,以捕获错误并向客户端发送错误响应。
Notice that the then
block returns null now, and catch
is used on the promise returned from then
to capture errors and send an error response to the client.
这篇关于尝试部署Firebase函数时出现ESLint错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!