【发布时间】:2021-12-05 23:07:20
【问题描述】:
问题已解决
如果您遇到同样的问题,请查看接受的答案,这是使用 serverMiddleware 实现它的一种方法
我正在使用需要私钥的 API。我将密钥存储在 .env 文件中,并在 nuxt 配置文件中调用它,如下所示:
privateRuntimeConfig: {
secretKey: process.env.MY_SECRET_KEY
},
我的 API 调用是在我的索引页面上的 asyncData() 挂钩内完成的。当我加载此页面或重新加载它时它工作正常,但每次我使用导航返回此页面时,我都会遇到错误(我使用缓冲区将我的 API 密钥转换为 base64)
第一个参数必须是字符串、Buffer、ArrayBuffer、Array 或类似数组的对象。
经过一番研究和调试,我发现我的私钥当时不可用,并且我的 api 调用中使用的“秘密”值是“未定义”。
我不明白的是为什么这在初始加载/重新加载时有效,但在页面导航上无效?有没有办法在不使用后端的情况下修复它? (用于 SEO 的 SSR 和使用私钥而不暴露它们的能力是我在项目中使用 Nuxt 的主要原因)
这是我的代码:
async asyncData({ $content, store, $config }) {
const secret = Buffer.from($config.secretKey).toString('base64')
const request = await fetch('https://app.snipcart.com/api/products', {
headers: {
'Authorization': `Basic ${secret}`,
'Accept': 'application/json'
}
})
const result = await request.json()
store.commit('products/addProducts', result)
const stocks = store.getters['products/getProducts']
return { stocks }
},
【问题讨论】:
标签: nuxt.js