javascript Firebase函数,解析错误:意外的标记=>

cedebl8k  于 2022-12-10  发布在  Java
关注(0)|答案(3)|浏览(158)

我正在用Js构建我的第一个firebase函数,以便用www.example.com API处理卡支付Checkout.com,我已经安装了checkout和firebase JavaScript SDK,这是我的index.js文件夹:

const functions = require("firebase-functions");
const { Checkout } = require("checkout-sdk-node");
const cko = new Checkout("sk_test_XXXXX-XXXX-XXXX");

exports.payWithToken = functions.https.onCall(async (data, context) => {
    try {
        const payment = await cko.payments.request({
            source: {
                token: data.token,
            },
            customer: {
                email: context.auth.token.email
            },
            currency: data.currency,
            amount: data.amount,
        })
        return {
            "Status": payment.status,
            "3DS-Link": payment.redirectLink,
            "Approved": approved,
            "Flagged": risk.flagged,
        };
    } catch (error) {
        console.log(error)
        throw new functions.https.HttpsError(error.name, error.message, error);
    }
});

我认为我正确地遵循了文档,但由于某种原因,我无法将此函数部署到firebase,并得到以下错误:
Parsing error: Unexpected token =>

anhgbhbe

anhgbhbe1#

package.json中,
更改此

"lint": "eslint .",

对此

"lint": "eslint",
c0vxltue

c0vxltue2#

我在this page上找到了解决方案。
基本上
箭头函数是ES6的一个特性,但这里有一个异步箭头函数。
异步功能通常是ES 8(或2017)的一个功能。因此,您需要在配置的根目录下指定以下设置:解析器选项:{ecma版本:8 //或2017年}
因此,我需要将我的.eslintrc.js文件更新为

module.exports = {
  root: true,
  env: {
    es6: true,
    node: true
  },
  parserOptions: {
    ecmaVersion: 8
  },
  extends: ['eslint:recommended', 'google'],
  rules: {
    'comma-dangle': 'off',
    'quote-props': 'off',
    indent: ['error', 2]
  }
};
vs3odd8k

vs3odd8k3#

我遇到了同样的问题。
我使用的ESLint配置与Firebase函数示例GitHub repo中的一个函数所使用的配置相同。https://github.com/firebase/functions-samples/tree/main/child-count,它使用异步函数。
我删除了eslintrc.js,并替换为与上述示例相同的eslintrc.json文件。此外,在package.json中,添加了一个新的依赖项"eslint-plugin-promise": "^4.3.1",并删除了默认的"eslint-config-google": "^0.14.0"(同样,与上述示例相同)。
这似乎已经为我解决了它。

相关问题