在 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