首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nuxt3:在server/api/ file中使用defineEventHandler()中的函数时出错

Nuxt3:在server/api/ file中使用defineEventHandler()中的函数时出错
EN

Stack Overflow用户
提问于 2022-05-04 16:04:05
回答 1查看 957关注 0票数 0

我试图传递一些身份验证头来获取第三方API,但是在Nuxt3中运行一个Nuxt3文件时会出现以下错误:

nuxt thisD.init不是新符号(https://nuxt-starter-jzgdht.w.staticblitz.com/blitz.331c80ffab288536319518a60349d00207075dad.js:6:1135208) at Object.createSign (https://nuxt-starter-jzgdht.w.staticblitz.com/blitz.331c80ffab288536319518a60349d00207075dad.js:6:808197) at Scheme.sign Object.createSign at RSAKey.module.exports.Key.RSAKey.sign https://nuxt-starter-jzgdht.w.staticblitz.com/blitz.331c80ffab288536319518a60349d00207075dad.js:6:808197 at NodeRSA.module.exports.NodeRSA.sign (./node_modules/node-rsa/src/NodeRSA.js:318:32)在generateWalmartHeaders (./ not /dev/index.mjs:446:28)上(./not/dev/index.mjs:458:14)在modules (./node_ node/h3/dist/index.mjs:364:14)的Object.eval as handler (./node_as handler/h3/dist/index.mjs:475:31),nuxt thisD.init不是Object.createSign (https://nuxt-starter-jzgdht.w.staticblitz.com/blitz.331c80ffab288536319518a60349d00207075dad.js:6:808197)在Scheme.sign (./node_thisD.init)处的一个新符号(https://nuxt-starter-jzgdht.w.staticblitz.com/blitz.331c80ffab288536319518a60349d00207075dad.js:6:1135208)。(./node_modules/node-rsa/src/libs/rsa.js:264:40) at NodeRSA.module.exports.NodeRSA.sign (./node_modules/node-rsa/src/NodeRSA.js:318:32) at generateWalmartHeaders (./..nuxt/dev/index.mjs:446:28)(./..nuxt/dev/index.mjs:458:14)在Object.eval as handler (./node_node/h3/dist/index.mjs:364:14)上(./node_node/h3/dist/index.mjs:475:31)

代码语言:javascript
复制
import NodeRSA from 'node-rsa';

const keyData = {
  consumerId: '<consumer id removed for this post>',
  privateKey: `-----BEGIN RSA PRIVATE KEY-----
  MIIEowIBAAKCAQEAiDffvTlnBcHfDhPjYlJhSk+atPFE6HpFaf4mm/aYBXmOn89A
  MMulkkmpu+RGj0SaPrpX/ockoSeMuuEPPd3AQ5uZAnJw9TBnE2/kJrPsHaKyVFGV
  hZneksIK/KdP/kpGSuVAkocPdit5zKwliMnc6/GVLpDFvU8K2QPnvYu2Jp8XBDwg
  gTu2tzHQkrm0cdCYZklKKqN9NdVLJy+6AL50+vX19nHwDdCYCvnPtH/hXxMwRnIJ
  3qibO8owPWh+q/xMld2K2OoUNWpbsxBj/r9Jxu60d429+XcIUu1hyPHG1lDKiK/n
  Z4L+7WE4Ez8sEVD0YrE9hRRbLl5Dsvi4XZrG9QIDAQABAoIBAQCFNN5+1JuCbcwK
  oDhD9fteB+pp92ZDUQ6AUCDBc6vF7tEiRjGnhf4ryA1LyDeX8qZDoUZbiRyw21Qr
  i9qzzR4u/wHp+q+rleG2iDy7/EZx1KA/BGkLdSTKrya/W35GVavXocg7gggErw80
  r0MlOQHpWR1hpAE61wjsn30HRpChwow1YZE/6cMIQN2nCJ+JGXuZDoGazYk4HwFD
  Fmrtag/FjShYUVgr4QlrPzYzcTCKX1UKQkZ9AED9Q2prKSvoD8ZxOJSaVF0FP1ty
  /i9L1I/eJEusSBPXc9v5xJjs7q8RRKZhn3TuvBHos3LDuaQKwPBe+w0vHr8ZVw5t
  tuZPiq8BAoGBAOYILkVnnrskg2qzqewHukiKnZHLi+WkJQPQzTHvVMMCEUaxF+6p
  Y58tLlaEd0uNH1ntDPya5s2y01/1eZ/8n1U1/SlqKoQ5apkC77eNBklMxixJ0xGP
  zu1bj5COba6pXdY+YcW2z7W0ubmPD3YCSD/VUD/IKXwTEAHm2J11ffM9AoGBAJeY
  hRbiSQW6GXWHu41qqIYsWfdJpy/A0qhpXjmySq1XFH/ThHDuFmn5RkZVvn7D/Pql
  GfO8E55QWjK+SLO7LBRazKP0GNmrKinVMKyo7WUgwrZy3fwEY5wcNaNFB/YL9J4M
  OSRp6eV3pnUwQI2NhzTzuHAyJgd/r+I6zMeSTn4ZAoGADGhejpHTRwbmK8g7Hycf
  jjAj5axUBHQBJx6JIutk6AvhgK2mu9HZNMnMGRCWGrYm/cPCkpGMZ4YAzsk/4ThQ
  I9mAqU43suAh9tTotz7dGvEQM21b/DOEltr8eHCmS+iIzjiZL3/33jY8Wlz0GYpv
  +Tl5VadnTXD9yQx5nKysuYUCgYA6PNy8Kth0u8a2ERvrOxNc4EL7ri7tOH11N218
  atMnfnGgnciefcjck2f880nId1CDldO/f/xlcGcGYXWanohTlYJSZh752DjNc1pM
  qmTw2cITx1MiUylVOr0caROi4XrrELUPGSVDA1FOaegSuVE89XhgmdNkRBh0p7Qt
  4zYGWQKBgFGuZgbPl76K3fj5POY5OlPusXdCCqJMHKPug+4e5mG82T1KvLFCj1PQ
  Fm0y9PoS3A8SXf+aEeLhRqVrpaU4w5RK8PqeF6IB2hpDrHJ8b+3ERU3J7/KuU8Vw
  pmwDIbjWypH4dNJgRMti+RKDb9llup6xP5Q4PQRzvUQdklSCp3D8
  -----END RSA PRIVATE KEY-----`,
  keyVer: 1,
};

const generateWalmartHeaders = () => {
  const { privateKey, consumerId, keyVer } = keyData;
  const hashList = {
    'WM_CONSUMER.ID': consumerId,
    'WM_CONSUMER.INTIMESTAMP': Date.now().toString(),
    'WM_SEC.KEY_VERSION': keyVer,
  };

  const sortedHashString = `${hashList['WM_CONSUMER.ID']}\n${hashList['WM_CONSUMER.INTIMESTAMP']}\n${hashList['WM_SEC.KEY_VERSION']}\n`;
  const signer = new NodeRSA(privateKey, 'pkcs1');
  const signature = signer.sign(sortedHashString);
  const signatureEnc = signature.toString('base64');

  return {
    'WM_SEC.AUTH_SIGNATURE': signatureEnc,
    'WM_CONSUMER.INTIMESTAMP': hashList['WM_CONSUMER.INTIMESTAMP'],
    'WM_CONSUMER.ID': hashList['WM_CONSUMER.ID'],
    'WM_SEC.KEY_VERSION': hashList['WM_SEC.KEY_VERSION'],
  };
};

export default defineEventHandler(() => {
  const options = {
    method: 'GET',
    headers: generateWalmartHeaders(), // <--- the error seems to originate from this

  return {
    api: 'works',
    options: options,
  };
});

我没有正确地使用defineEventHandler()吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-21 16:04:11

@红移,

1. defineEventHandler()函数中的const 'options‘没有关闭标记(未终止)。

  1. 请记住,我们在服务器端工作,检查generateWalmartHeaders()中的函数。它们都在后端运行吗?

  1. 用硬编码的头启动这段代码,并查看它是否运行/调试。

  1. Check Docs --他们更改了6月20日的文档,比你发布这个问题的时间还要晚。

  1. 检查此示例.

代码语言:javascript
复制
export default defineEventHandler((event) => {
  return {
    api: 'works'
  }
})

  1. 检查我的工作示例,也许它会帮助您上路:

代码语言:javascript
复制
const config = useRuntimeConfig()

let environment = process.env.NODE_ENV;
let $endpoint = environment == 'development' ? 'http://dev.endpointisdev/' : 'http://prod.production/';

console.log('ENVIRONMENT =', process.env.NODE_ENV)
console.log('$ENDPOINTS =', $endpoint)

export default defineEventHandler(async(event) => {

  const productsRequest = await $fetch(`${$endpoint}` +'somelistrequest', { 
    method: 'POST',
    headers: {
      'Authorization': 'Basic ' + btoa(`${config.auth_user}:${config.auth_pw}`),
      'guiId': '7552662'
    },
    body: {
      reference : "blablabla", // 
      productListRequest : {
      securityKey : `${config._key}`
      }
    } 
  });
  return responseObject.list
})

  1. 重要:我用这样的东西从我的店里炒了这个。现在,我遇到了这样一种情况:对生产的部署使这个api调用失败,因为它需要是$fetch("/api/submitOrder",“camelCase” let submitOrder =等待{方法:'POST',body: orderPayload});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72116079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档