为什么nuxt构建的应用程序中的baseURL始终像服务器应用程序的baseURL一样?

时间:2019-06-12 18:20:23

标签: nuxt.js

我需要生成的nuxt应用程序将请求发送到'/'。因此,该应用程序的api将位于其静态生成的文件所在的位置。

我面临一个问题:运行“ nuxt generate”时,process.server为true,process.browser为false。在生成过程中,nuxt将查询发送到服务器 baseURL (localhost:3000),可以。但是生成的javascript代码也尝试将查询发送到localhost:3000。

我运行命令

date(like_time) as Date               count(liking_user_id ...) as Count

2018-04-17                                      0

2018-04-18                                      0

2018-04-19                                      0

2018-04-20                                      0

2018-04-21                                      0

2018-04-22                                      1

2018-04-23                                      0

2018-04-24                                      0

2018-04-25                                      1

并在浏览器中打开localhost:3001,我看到生成的页面,并且在控制台中出现错误:

 http-server -c-1 -p 3001 ./dist/

在我的nuxt.config.js中

 Failed to load http://localhost:3000/data/pages.db

当我在浏览器中运行 npm run dev 时,浏览器将请求发送到'/',但是生成的应用仍将请求发送到localhost:3000

如何解决此问题?

UPD: 我需要从 asyncData 中的 / static 中获取 json 文件。我想,我找到了解决方法。

我使用 axios ,而不是 @ nuxtjs / axios ,并在一个地方执行以下操作:

  axios: {
    browserBaseURL: '/',
  },

,然后在任何组件中

 axios.defaults.baseURL = typeof window === 'undefined' 
     ? 'http://localhost:3000' : window.location.origin 
asyncData中的

 import axios from 'axios'

结果,我可以生成静态文件,将其放置到任何域,并且js代码可以正确地从 / static

获取文件

我希望这会派上用场。

1 个答案:

答案 0 :(得分:0)

反应迟到,可能对其他人有用。

如果您希望简化Nuxt应用程序的代码,可以使用@nuxtjs/axios模块,并使用插件来指定浏览器中使用的 baseUrl

yarn install '@nuxtjs/axios'

在nuxt.config.js中:

  modules: [
    '@nuxtjs/axios'
  ],
  plugins: [
    '~/plugins/axios-set-client-baseurl.js'
  ],

在plugins / axios-set-client-baseurl.js中:

export default function ({ $axios }) {
  if (process.client) {
    $axios.setBaseURL(window.location.origin)
  }
}