繁体   English   中英

Express.js POST 处理程序中的异步/等待

[英]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 这意味着处理钱包地址的任何参数,最有可能设置为accountAddressreq.body.ownerAddress是 null 或无效。

我会仔细检查您的请求正文中的值,因为它们是可能的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM