尝试部署Firebase功能时出现“意外的令牌带”

时间:2020-05-25 09:37:14

标签: swift firebase google-cloud-functions

我正在尝试使用Firebase Functions将Stripe合并到iOS应用中。我正在使用带有后端的Swift在Stripe文档中“接受付款”的文档。我首先做了npm install --save stripe。结束没有错误。然后我做了npm install。到目前为止,我的 index.js 看起来像这样:

// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
// exports.helloWorld = functions.https.onRequest((request, response) => {
//  response.send("Hello from Firebase!");
// });

const functions = require('firebase-functions');
const stripe = require('stripe')('sk_test_...');

const paymentIntent = await stripe.paymentIntents.create({
  amount: 1099,
  currency: 'usd',
});
const clientSecret = paymentIntent.client_secret

运行firebase deploy时,我得到:11:29 error Parsing error: Unexpected token stripe。我文件中的第11行char 29是stripe.paymentIntents ...

这是我第一次使用Firebase Functions或Stripe,所以我很茫然。感谢您的帮助。

编辑:

这是我的package.json文件的内容。

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "lint": "eslint .",
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "dependencies": {
    "firebase-admin": "^8.10.0",
    "firebase-functions": "^3.6.1",
    "stripe": "^8.55.0"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-plugin-promise": "^4.0.1",
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}

1 个答案:

答案 0 :(得分:2)

此错误是因为在云环境中未安装条带库。

npm install确实安装了依赖项,但是在您的本地环境中,要将它们安装在Cloud Functions环境中,您需要从Cloud Function编辑package.json文件。

此功能到add the dependencies的要求。

这是通过将依存关系部分添加到package.json文件

来完成的

它会类似:

{
  "name": "sample-name",
  "version": "0.0.1",
  "dependencies": {
    "escape-html": "^1.0.3",
    "stripe": "^8.24.0"
  }
}

编辑

使用此代码,它可以在Cloud函数上工作:

const stripe = require('stripe')('<My Secret Key>');

exports.helloWorld = (req, res) => {
  let paymentIntent = null;

  paymentIntent = stripe.paymentIntents.create({
  amount: 2000,
  currency: 'usd',
  description: 'My first payment',
});
  let message = req.query.message || req.body.message || 'Hello World!';
  res.status(200).send(message);
};

显然,问题在于等待,因为HTTP云功能以同步方式工作