如何修复节点中的“解析错误:意外令牌=>”?

时间:2019-05-08 07:30:18

标签: javascript node.js firebase google-cloud-functions stripe-payments

我正在使用Firebase函数进行条带化支付集成。此特定功能用于通过条带注册客户。

节点版本10.15.3

npm版本6.9.0

“ ecmaVersion”:.eslintrc.json中的6

const functions = require('firebase-functions');

const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

const stripe = require('stripe')(functions.config().stripe.testkey)

exports.createStripeCustomer = functions.auth.user()

          .onCreate(async (user) => {
             const customer = await
             stripe.customers.create({email: user.email});
             await admin.firestore()
               .collection('stripe_customers')
               .doc(user.uid)
               .set({customer_id: customer.id});

           });

代码与github示例中提供的firebase平台相同 https://github.com/firebase/functions-samples/blob/master/stripe/functions/index.js

  

解析错误:意外的令牌=>

如果在.eslintrc.json中将“ ecmaVersion”:6更改为“ ecmaVersion”:8

then error is .onCreate(async (user) => {

                            ^

SyntaxError: Unexpected token (

我想正确部署功能,以便用户可以在条带上注册并存储在Firebase存储中的日期

3 个答案:

答案 0 :(得分:2)

确保您正在本地计算机节点> = 8上运行。要进行部署,应将其放在package.json中。

{
    //...
    "engines": {
        "node": "8"
    },
    //...  
}

对于eslint,要启用对异步功能的解析,您应该在配置中包括以下内容:

{
    "parserOptions": {
        "ecmaVersion": 2017
    }
}

答案 1 :(得分:0)

好像您是在谈论eslint错误。我已经能够使用ecmaVersion 2015在eslint演示页面中reproduce进行

我刚刚将其更改为ecmaVersion 2017(支持async/await时的版本),错误消失了(link)。

此外,请验证您正在谈论的项目中的eslint配置。这是ecmaVersion 2017:link

答案 2 :(得分:0)

我是 React-native + firebase 功能的新手。但是有了这些代码行,lint 问题就解决了,我现在可以部署 firebase 函数了。

{
  "$schema": "./node_modules/@react-native-firebase/app/firebase-schema.json",
  "react-native": {
    "crashlytics_auto_collection_enabled": true,
    "crashlytics_debug_enabled": true,
    "messaging_android_notification_channel_id": "high-priority",
    "messaging_ios_auto_register_for_remote_messages": true
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ],
    "source": "functions"
  }
}

{
  "$schema":"./node_modules/@react-native-firebase/app/firebase-schema.json",
  "react-native": {
      "crashlytics_auto_collection_enabled": true,
      "crashlytics_debug_enabled": true,
      "messaging_android_notification_channel_id": "high-priority",
      "messaging_ios_auto_register_for_remote_messages":true
    }
}