无法在firebase中部署函数

无法在firebase中部署函数,firebase,google-cloud-platform,google-cloud-functions,nuxt.js,razorpay,Firebase,Google Cloud Platform,Google Cloud Functions,Nuxt.js,Razorpay,我正在尝试将Razorpay集成到我的nuxt应用程序中。 为此,我使用npm I razorpay安装了razorpay依赖项 我的index.js文件以 const functions = require('firebase-functions') const Razorpay = require('razorpay') const admin = require('firebase-admin') const crypto = require('crypto') 但是在编写func

我正在尝试将Razorpay集成到我的nuxt应用程序中。 为此,我使用npm I razorpay安装了razorpay依赖项

我的index.js文件以

const functions = require('firebase-functions')

const Razorpay = require('razorpay')

const admin = require('firebase-admin')

const crypto = require('crypto')
但是在编写functionbasic helloWorld函数并部署之后,它给了我一个无法部署函数的错误。 但当我在下面一行评论时,helloWorld函数成功部署

//const Razorpay = require('razorpay')
我再一次在上面一行取消注释,它仍然给我无法部署的错误

版本信息

节点v12.18.3

Firebase v8.16.2

我的依赖关系


请注意,要集成Razorpray,您需要在Firebase Cloud函数中添加以下内容:

const Razorpay = require("razorpay");
var key_id = "YOUR_RAZORPAY_KEY_ID";
var key_secret = "YOUR_RAZORPAY_KEY_SECRET";

var instance = new Razorpay({
  key_id: key_id,
  key_secret: key_secret
});

您需要按照以下步骤进行集成:

注册razorpay并从中获取您的密钥Id和密钥机密 在前端集成razorpay的结帐模式,以接受用户的付款详细信息。 在后端实现Order API。 获取授权付款。 为了更好地理解,请查看下面的内容,这是一个代码示例

**********更新**********

关于Cors错误,请确保:

进口Cors 调用每个函数顶部的cors模块,如下所示:
你能分享你得到的错误吗?它现在给了我cors错误。你导入了cors如下吗?const cors=require'cors'{origin:true};是,因为导入的常量cors=require'cors'{origin:true}。你能帮我把cors添加到我的代码中吗。这是我的代码。您能分享一下它给您的关于Cors的错误吗?付款:1从源站获取的访问已被Cors策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源站”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”以获取禁用cors的资源。cors错误最终通过将functions.https.onRequest更改为functions.https.onCall来解决。
const Razorpay = require("razorpay");
var key_id = "YOUR_RAZORPAY_KEY_ID";
var key_secret = "YOUR_RAZORPAY_KEY_SECRET";

var instance = new Razorpay({
  key_id: key_id,
  key_secret: key_secret
});

const cors = require('cors')({origin: true});

exports.createPayment = functions.https.onRequest(async (req, res) => {
    cors(req, res, () => {
        // your function body here - use the provided req and res from cors
    })
});
const functions = require('firebase-functions')
const Razorpay = require('razorpay')
const admin = require('firebase-admin')
const crypto = require('crypto')
const cors = require('cors')({ origin: true })
admin.initializeApp()


//Function to Create Payment
exports.createPayment = functions.https.onRequest(async (req, res) => {
  cors(req, res, () => {
    admin
      .firestore()
      .collection('payments')
      .add(req.body.data)
      .then((payment) => {
        var instance = new Razorpay({
          key_id: 'rzp_test_my_key',
          key_secret: 'my_secret_key',
        })

        var options = {
          amount: req.body.data.amount * 100,
          currency: 'INR',
          receipt: payment.id,
          payment_capture: 1,
        }
        instance.orders.create(options, function (err, order) {
          res.status(201).send({ data: order })
        })
      })
  })
})

// Function to Verify Payment

exports.verifyPayment = functions.https.onRequest(async (req, res) => {
  cors(req, res, () => {
    const order = req.body.data

    const text = order.razorpay_order_id + '|' + order.razorpay_payment_id
    var signature = crypto
      .createHmac('sha256', secret_key)
      .update(text)
      .digest('hex')

    if (signature === order.razorpay_signature) {
      res.status(201).send({ data: { message: 'Successfull Payment' } })
    } else {
      res.status(400).send({ data: { message: 'Signature mismatch' } })
    }
  })
})