在 CMD(Firebase 云功能)中使用显示错误的 Razorpay 集成

Posted

技术标签:

【中文标题】在 CMD(Firebase 云功能)中使用显示错误的 Razorpay 集成【英文标题】:Rezorpay integration using showing error in CMD(Firebase cloud function) 【发布时间】:2021-06-02 19:01:09 【问题描述】:

我正在使用 firebase 云功能为我的 android 应用程序使用“调用”功能为 Razorpay 创建订单 ID,如下所示。但是我无法上传代码-

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const cors = require('cors')(origin: true);
Object.defineProperty(exports, "__esModule",  value: true );
const Razorpay = require('razorpay')
const instance = new Razorpay( key_id: 'myKey', key_secret: 'mySecretKey' )
 
exports.createOrder = functions.https.onCall((data, context) => 

   var options = 
     amount: 50000,  // amount in paisa
     currency: "INR",
     receipt: "order_rcptid_11"
   ; 
   
    try
        const order = await instance.orders.create(options);
        res.send(order);
    catch(e)
        console.log(e);
        res.status(403).send(error: 'error');
    
    
);

错误是-

      error  Parsing error: Unexpected token instance
events.js:200
      throw er; // Unhandled 'error' event
      ^

这里的22表示下面一行

 const order = await instance.orders.create(options);

它有什么问题?我对JS和NODE Js了解不多。

函数文件夹内的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": "12"
  ,
  "main": "index.js",
  "dependencies": 
    "firebase-admin": "^9.2.0",
    "firebase-functions": "^3.11.0"
  ,
  "devDependencies": 
    "eslint": "^7.6.0",
    "eslint-config-google": "^0.14.0",
    "firebase-functions-test": "^0.2.0"
  ,
  "private": true

函数文件夹外的Package.json文件


  "dependencies": 
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "razorpay": "^2.0.6"
  

完整的错误信息

 22:29  error  Parsing error: Unexpected token instance

✖ 1 problem (1 error, 0 warnings)

events.js:200
      throw er; // Unhandled 'error' event
      ^

Error: spawn npm --prefix "%RESOURCE_DIR%" run lint ENOENT
    at notFoundError (C:\Users\Bhaskar\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:6:26)
    at verifyENOENT (C:\Users\Bhaskar\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:40:16)
    at ChildProcess.cp.emit (C:\Users\Bhaskar\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:27:25)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
Emitted 'error' event on ChildProcess instance at:
    at ChildProcess.cp.emit (C:\Users\Bhaskar\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:30:37)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12) 
  code: 'ENOENT',
  errno: 'ENOENT',
  syscall: 'spawn npm --prefix "%RESOURCE_DIR%" run lint',
  path: 'npm --prefix "%RESOURCE_DIR%" run lint',
  spawnargs: []


Error: functions predeploy error: Command terminated with non-zero exit code1

这里的22表示下面一行

 const order = await instance.orders.create(options);

【问题讨论】:

【参考方案1】:

我认为这与await 有关。不知道为什么它在错误中不太清楚,但是await 可以在异步函数中使用(reference)。所以我们有 3 个选项来纠正(可能更多,但这里给出 3 个):

    使函数异步添加async 关键字,如下所示:
...
exports.createOrder = functions.https.onCall( async (data, context)=> 
...
    try 中使用then 而不是await
...
try
        instance.orders.create(options).then(order => res.send(order));
    catch(e)
...
    在 Razorpay 上使用类似example 中的回调函数。

我测试了我这边的前 2 个,它们部署正确。我不知道这是否正常工作,因为这是我第一次看到 Razorpay。但是它的部署没有错误。

【讨论】:

以上是关于在 CMD(Firebase 云功能)中使用显示错误的 Razorpay 集成的主要内容,如果未能解决你的问题,请参考以下文章

在控制台中收到 Firebase 云消息通知但未在手机中显示 - Swift App

Firebase firestore云功能显示错误:无效使用“undefined”类型作为Firestore参数

如何使用NodeJS中的firebase云功能从firebase实时数据库中找出最近的位置LatLng

Puppeteer 等待页面和 setTimeout 在 Firebase 云功能中不起作用

云功能执行成功,但通知未显示 android

Flutter/Firebase:管理功能是应用内功能还是云功能?