[英]Async/await in Express.js POST handler
我正在尝试在 POST 处理程序中调用异步 function。
我试图调用的 function 如下(此代码有效):
const seaport = require("./seaport.js");
// This function creates a fixed price sell order (FPSO)
async function createFPSO(ownerAddress, contractAddress, tokenId, startAmount, expirationTime = 0) {
const fixedPriceSellOrder = await seaport.createSellOrder({
asset: {
tokenId: tokenId,
tokenAddress: contractAddress,
},
startAmount: startAmount,
expirationTime: expirationTime,
accountAddress: ownerAddress,
});
console.log(`Successfully created a fixed-price sell order! ${fixedPriceSellOrder.asset.openseaLink}\n`);
}
createFPSO(MY_ADDRESS, NFT_CONTRACT_ADDRESS, "2", 0.01);
由于上面的代码有效,我现在尝试将其传输到 POST 处理程序,如下所示:
const express = require('express');
const app = express();
app.use(express.json());
const seaport = require("./seaport.js");
app.post('/create/fixedprice', async (req, res, next)=> {
try {
const fixedPriceSellOrder = await seaport.createSellOrder({
asset: {
tokenId: req.body.tokenId,
tokenAddress: req.body.contractAddress,
},
startAmount: req.body.startAmount,
expirationTime: req.body.expirationTime,
accountAddress: req.body.ownerAddress,
});
console.log(`Successfully created a fixed-price sell order! ${fixedPriceSellOrder.asset.openseaLink}\n`);
res.send(fixedPriceSellOrder);
} catch (error) {
return next(error);
}
});
const port = process.env.PORT || 13579;
app.listen(port, () => console.log(`Service is listening on port ${port}..`));
但是,这会导致错误(我怀疑错误消息是否相关,但仍然共享它):
Error: No wallet address found
at Object.validateAndFormatWalletAddress (/root/opensea/opensea-creatures/node_modules/opensea-js/src/utils/utils.ts:928:11)
at OpenSeaPort.<anonymous> (/root/opensea/opensea-creatures/node_modules/opensea-js/src/seaport.ts:1994:22)
at step (/root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:40:23)
at Object.next (/root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:21:53)
at /root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:15:71
at new Promise (<anonymous>)
at __awaiter (/root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:11:12)
at OpenSeaPort._makeSellOrder (/root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:2038:16)
at OpenSeaPort.<anonymous> (/root/opensea/opensea-creatures/node_modules/opensea-js/src/seaport.ts:625:30)
at step (/root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:40:23)
at Object.next (/root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:21:53)
at /root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:15:71
at new Promise (<anonymous>)
at __awaiter (/root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:11:12)
at OpenSeaPort.createSellOrder (/root/opensea/opensea-creatures/node_modules/opensea-js/lib/seaport.js:604:16)
at /root/opensea/opensea-creatures/scripts/service.js:58:47
我要说的一点是,当我将第一个清单中的相同功能转移到 POST 处理程序时,它现在失效了,所以我怀疑它与 OpenSea SDK 被破坏有什么关系。
错误消息非常相关。 错误消息是Error: No wallet address found
。 这意味着处理钱包地址的任何参数,最有可能设置为accountAddress
的req.body.ownerAddress
是 null 或无效。
我会仔细检查您的请求正文中的值,因为它们是可能的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.