0

我正在制作一个网站,前端使用 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,但没有运气。

4

1 回答 1

0

随机解决了。我在我的环境变量(Win 10)中设置了一个名为“http_proxy”的代理变量。删了,没有问题了。

于 2021-01-15T10:41:24.090 回答