我正在制作一个网站,前端使用 NuxtJS,后端使用 Laravel。
我需要在每个页面上都有一些可用的数据,所以我使用 nuxtServerInit 函数来获取它,如下所示:
async nuxtServerInit({ commit }, { $axios }) {
const items= await $axios.$get('items')
commit('saveItems', items)
}
当指向我已经在线的 Laravel 应用程序时,这很好用,但当我在本地机器上运行它时就不行了。我收到“获取 addrinfo ENOTFOUND 3213”错误。
我的 .env 文件包含 axios 的 baseURL,因此本地将是:
API_URL=http://127.0.0.1:8000/v1/
我尝试了很多东西,但无济于事。它在使用实时后端时有效,并且 API_URL 没有问题,因为它适用于除 nuxtServerInit 之外的所有其他功能/页面。我试过了:
- 使用 nuxt/dotenv 及其新的 runtimeConfig 设置在 nuxt.config.js 中配置 Axios 的基本 URL
- 更改我的后端运行的端口
- 更改我的前端运行的端口
- 为我的本地后端添加自定义 URl(例如指向 localhost:8000 的 devlocal.com)
但没有任何效果。我的 /etc/host 文件也正确包含 127.0.0.1,因为我看到它是本地许多 ENOTFOUND 错误的解决方案。
我还尝试将 .env 文件中的 API_URL 更改为
API_URL=localhost:8000/v1/
但是后来我得到了“ENOTFOUND 8000”,或者我将 Laravel 服务器设置为哪个端口。
请帮忙!
编辑:
在 dev 上的 Axios 上切换调试后,我发现请求中的主机名错误,从而导致 URL 不正确:
reusedSocket: false,
host: '3213',
protocol: 'http:',
_redirectable: [Circular *1],
[Symbol(kCapture)]: false,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype]
},
_currentUrl: 'http://3213/http://localhost:8000/v1/items',
我不知道“3213”是从哪里来的。我尝试在 nuxt.config.js 中将默认主机/主机名/端口值设置为 Axios,但没有运气。