我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

    • nodejs

    • git

    • CI

      • 使用gitlab-ci实现前端自动化部署
      • 记一次nuxt配置部署环境接口baseURL,axios的经验
        • 环境
        • 问题
        • 分析问题
          • 解决
          • 最终解决
          • 配置
      • pm2+github+webhook部署转向coding自动化部署nodejs项目
      • coding构建vuepress项目
    • 小程序

    • docker

    • Typescript

    • webpack

    • 安全

  • 基础

  • 框架

  • 情商

  • 算法

  • 网络

  • 千锤百炼
  • 大前端
  • CI
fangdown
2021-12-16
目录

记一次nuxt配置部署环境接口baseURL,axios的经验

# 不能访问生产api地址的问题

# 环境

  1. nuxt项目
  2. 生产环境接口api正常

# 问题

  axios: {
    baseUrl: 'http://xxx.com'
    proxy: true,
    prefix: '/api/',
    credentials: true
    // See https://github.com/nuxt-community/axios-module#options
    },
    proxy: {
    '/api/': {
      target: 'http://localhost:xxxx',
      pathRewrite: {
        '^/api/': '/',
        changeOrigin: true
      }
    }
  },

配置了nuxt.config.js, 本机开发可以访问到接口地址,显示正常, 打包构建之后访问就不正常

# 分析问题

  • proxy:由于之前对proxy的理解, 是代理服务器, 使用于本机开发连接远程开发机接口
  • 打包构建,本地启动,断开开发机api,提示接口不通,是什么原因呢?

在我的理解中是这样的, 设置了baseUrl, proxy是针对dev环境起作用的, 所以在npm run start之后,proxy部分应该不起作用了

那么访问的地址就变成baseUrl + url,这样的地址是可以访问, 但实际一直不成功。

于是就在网上寻找各种资料,各种尝试....

# 解决

  1. 设置env,通过cross-env来设置变量
  "scripts": {
    "dev": "cross-env BASE_URL=http://localhost:xxx nuxt",
    "build": "cross-env BASE_URL=https://api.xxx.cn NODE_ENV=production nuxt build",
    "start": "cross-env BASE_URL=https://api.xxx.cn NODE_ENV=production nuxt start",
    "generate": "cross-env BASE_URL=https://api.xxx.cn NODE_ENV=production nuxt generate"
  },
  1. 在nuxt.config.js中设置env
    env: {
    baseUrl: process.env.BASE_URL || 'http://localhost:xxx'
  },

在经过以上2步的时候,进行尝试, 还是不成功, 非常郁闷了

  1. 尝试axios拦截 单独写一个axios是可以成功访问的, 但是需要引入,不能通过this.$axios这样的方式引用,放弃了

它是新创建一个axios实例,不是nuxt自带的那个

# 最终解决

在经过思考后,尝试把proxy中的target也用process.env.BASE_URL替代

然后构建打包验证。。。

duang 居然成功请求到接口了,令人惊讶, 想不到生产环境也需要proxy吗

# 配置

  env: {
    baseUrl: process.env.BASE_URL || 'http://localhost:xxx'
  },
  axios: {
    proxy: true,
    prefix: '/api/',
    credentials: true
    },
    proxy: {
    '/api/': {
      target: process.env.BASE_URL,
      pathRewrite: {
        '^/api/': '/',
        changeOrigin: true
      }
    }
  },
#coding
上次更新: 2021/12/19, 18:05:42
使用gitlab-ci实现前端自动化部署
pm2+github+webhook部署转向coding自动化部署nodejs项目

← 使用gitlab-ci实现前端自动化部署 pm2+github+webhook部署转向coding自动化部署nodejs项目→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式