无法从firebase上托管的vue.js项目调用API到存储在第三方服务器中的node.js后端

kmbjn2e3  于 2023-01-04  发布在  Node.js
关注(0)|答案(1)|浏览(148)

我使用node.js作为后端,vue.js作为前端Vue.js是项目托管在firebase上,而node.js后端托管在第三方服务器http://113.XXX.XX.XXX:XXXX/上。我希望我的API调用获得此后端URL的代理,但似乎不起作用
vue.js项目的package.json文件

{
  "homepage": "https://xxxxx-xxx.web.app/",
  "name": "portal",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
}

vue.config.js文件

module.exports = {
  publicPath: '/dist',
  devServer: {
    proxy: {
      '^/api/':{
        target: 'http://XXX.XXX.XX.XXX:XXX/',
        secure: false,
        changeOrigin: true
      },
      '^/u/api/':{
        target: 'http://XXX.XXX.XX.XXX:XXX/',
        secure: false,
        changeOrigin: true
      }
    }
  }
}

当我使用npm run serve在本地运行项目时,API调用在本地环境中得到了正确的代理,但当我使用npm run build创建其构建版本并将其托管在firebase上时,没有API调用得到代理
我认为问题是:我怀疑使用devServer设置的代理只适用于本地环境(localhost),而不适用于生产模式。
任何帮助都很感激...谢谢

i1icjdpr

i1icjdpr1#

我的猜测是正确的devServer属性只适用于开发环境,
我用baseUrl = http://HOST_IP:PORT/创建了axios示例,其中您应该用实际值替换host_ip和port

import axios from 'axios'

export default axios.create({
    baseURL: process.env.NODE_ENV === 'development' ? '/' : 'http://xxx.xx.xxx.xx:yyyy/',
});

相关问题