尝试部署功能 Firebase 时出现 ESLint 错误 [英] ESLint error trying to deploy functions Firebase

查看:31
本文介绍了尝试部署功能 Firebase 时出现 ESLint 错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试部署 fireabase 示例,但是当我尝试部署它时,CLI 会启动错误:

I'm try to deploy fireabase example , but when I try to deploy it , CLI launches an error:

[代码]

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

你得到这个是因为你有一个从 then 返回的承诺,但你从来没有 returncatch 可能的错误.

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.

它要求你在 then 调用的每个函数中返回一个值,即使你没有任何特殊的东西要发送到下一个 Promise 链.

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);
});

注意 then 块现在返回 null,并且 catch 用于从 then 返回的 promise 以捕获错误并发送错误回复客户.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆