Nuxt 如何在开发或生产环境中设置 baseURL

Posted

技术标签:

【中文标题】Nuxt 如何在开发或生产环境中设置 baseURL【英文标题】:Nuxt How to set baseURL in dev or production 【发布时间】:2019-07-13 05:24:07 【问题描述】:

这似乎是一个简单的 Nuxt 问题,但我就是想不通。

当运行“NPM run dev”时,我想将 Axios baseURL 设置为“localhost/api”,当在“NPM run generate”之后从 dist 文件夹运行时,我希望 baseURL 为“/api”。

有简单的解决办法吗?

【问题讨论】:

【参考方案1】:

这是通过nuxt.config.js实现的方法:

let development = process.env.NODE_ENV !== 'production'

module.exports = 
  axios: 
    baseURL: development ? 'http://localhost:3001/api' : 'https://domain/api'
  ,
  modules: [
    '@nuxtjs/axios'
  ],

如您所见,您应该指定后端的完整 URL,包括域(仅 SPA 模式除外)。

并且不要忘记安装 @nuxtjs/axios 作为依赖项来尝试示例。

【讨论】:

工作完美! @SteveO 酷。在这种情况下,您最好将此问题标记为已解决,只需说 不工作的兄弟【参考方案2】:

您也可以通过环境变量从外部(例如 package.json 脚本)设置 api

我的 package.json 片段(当浏览器使用不同的 api url 然后服务器端渲染,仍然由 Nuxt 本身支持,变量 API_URL_BROWSER 和 API_URL)

 "scripts": 
    "dev-prodapi": "API_URL=https://kairly.com/api nuxt",
    "dev": "API_URL=http://localhost:8000/api nuxt",
    "dev-spa-prodapi": "API_URL=https://kairly.com/api nuxt --spa",
    "dev-spa": "API_URL=http://localhost:8000/api nuxt --spa",
    "build": "API_URL_BROWSER=https://kairly.com/api API_URL=https://internal-apihost/api/ nuxt build --modern=server",
    "start": "API_URL_BROWSER=https://kairly.com/api API_URL=https://internal-apihost/api/ nuxt start --modern=server",

并且在 nuxt 配置中根本不使用 axios 部分。

【讨论】:

以上是关于Nuxt 如何在开发或生产环境中设置 baseURL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Nuxt 配置中设置 .env 文件路径?

如何在 nuxt/axios 中设置 baseUrl?

如何在 Nuxt 中设置 netlify 表单

如何在 Flutter 中设置不同的 firebase 环境

在 dev 和 prod 环境中设置 Backbone.js 从 Symfony2 获取

如何在 NestJS 中设置类似 Angular 的配置环境文件?