【发布时间】:2021-09-02 23:57:22
【问题描述】:
我想在asyncData()调用一个API
async asyncData({ $axios, params, store }) {
let itemUUID = params.item;
let item = await $axios.get("/item/" + itemUUID);
return {item};
}
问题: Axios 仍在http://localhost:3000 上发出请求
如果我执行console.log($axios.defaults.baseURL),则会打印我的 API 的正确 baseURL。
如果我使用我的商店操作并使用this.$axios 拨打电话,这也有效
我在 SSR 模式下使用 @nuxtjs/axios 5.13.1 和 Nuxt 2.15.6 并在 nuxt.config.js 中使用正确的 baseURL 配置它
有趣的是,如果我编辑页面内容并触发了热模块重新加载,则会使用正确的 URL。也许问题应该是 Axios 是否在正确的时间触发,在服务器上?
编辑:我检查了在 HMR 上发出的请求,这是在 client.js 中触发的。
如果我在 created() 钩子中调用我的商店,请求就会成功执行。
我的nuxt.config.js:
publicRuntimeConfig: {
axios: {
baseURL: process.env.EXPRESS_SERVER_URL
}
},
privateRuntimeConfig: {
axios: {
baseURL: process.env.EXPRESS_SERVER_URL,
}
},
【问题讨论】:
-
如果你在
asyncData中console.log($axios)怎么办?你是如何在nuxt.config.js中配置baseURL的?asyncData和fetch(钩子)应该产生相同的结果(服务器 + 客户端)。baseURL更新后您是否重新启动了您的应用程序? -
仍然包括在 nuxt.config.js 中配置的正确 baseURL - 这包含一个持有
baseURL: process.env.EXPRESS_SERVER_URL的 axios 对象 -
也许可以尝试使用
runtimeConfig进行axios 配置,如官方文档中所建议:stackoverflow.com/a/67983038/8816585 -
如果你把它完全称为服务器端呢?就像在您的
nuxt.config.js文件的顶部一样,就像常规的 Node.js 脚本一样?它是否到达正确的端点? -
啊,是的,对。在
nuxtServerInit试试吧:nuxtjs.org/docs/2.x/directory-structure/store/…
标签: javascript axios nuxt.js