关于Vue-Cli proxy 不生效的问题

前端开发中经常会遇到调后端接口跨域的问题,解决方法有很多,这里不做介绍了,(有兴趣的可以去这里看看:https://juejin.cn/post/6844904126246027278#heading-44


今天主要说下Vue-Cli 中的代理,因为看到好多人按照官方文档配置,结果却不生效,为什么会这样呢,无外乎配置的不正确。
先看下官方的文档:

devServer.proxy

  • Type: string | Object

    如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器。这个问题可以通过 vue.config.js 中的 devServer.proxy 选项来配置。

    devServer.proxy 可以是一个指向开发环境 API 服务器的字符串:

    module.exports = {
      devServer: {
        proxy: 'http://localhost:4000'
      }
    }
    

    这会告诉开发服务器将任何未知请求 (没有匹配到静态文件的请求) 代理到http://localhost:4000

    如果你想要更多的代理控制行为,也可以使用一个 path: options 成对的对象。完整的选项可以查阅 http-proxy-middleware 。

    module.exports = {
      devServer: {
        proxy: {
          '/api': {
            target: '<url>',
            ws: true,
            changeOrigin: true
          },
          '/foo': {
            target: '<other_url>'
          }
        }
      }
    }

从文档中看,这种方式是给我们开发环境用的 ,其次是我们的请求要被开发服务器接收到,且不能匹配到请求,然后我们的请求就会被代理到配置的URL。


看懂了文档也就好找出我们配置不生效的原因,其实主要注意一下问题就行了(仅本地开发境适用,测试及生产时最好都部署在统一域名下,或者使用nginx代理)
1.配置好文件要重新启动服务,npm run dev
2.不是用对象形式代理的话比较简单,proxy: 'http://iqoo.want.com',就行了,前提是 .env.development 等环境文件中没有配置API默认路径,如果配置API的URL,就要注释掉,或者改为本地路径,否则代理不会生效,

NODE_ENV=development
VUE_APP_API_URL=development api url
VUE_APP_API_BASE_URL=http://iqoo.want.com/

需要改为
NODE_ENV=development
VUE_APP_API_URL=development api url
VUE_APP_API_BASE_URL=http://localhost:9090/  端口改为自己设定的端口


或者直接注释掉

NODE_ENV=development
VUE_APP_API_URL=development api url
##VUE_APP_API_BASE_URL=http://iqoo.want.com/

3.path: options 成对的对象时,环境注意事项同上,这里主要注意   ‘/api’ ,如果后端接口没有 /api 这个路径,那么你需要在本地默认路径上加上,同时在代理后注销

.env.development
--------------------
NODE_ENV=development
VUE_APP_API_URL=development api url

VUE_APP_API_BASE_URL=http://localhost:9090/api/
或
VUE_APP_API_BASE_URL=/api/


vue.config.js
----------------------
devServer: {
    port: 9090,
    open: true,
    https: false,
    proxy: {
      '/api': {
          target: 'http://iqoo.want.com',
          secure: false,
          pathRewrite: {'^/api' : ''}, //将/api转换成空字符
          changOrigin: true,
       }
    }
 }
   


 也可以将‘’/API‘’换成真是的路径,具体根据项目变换,如果是真是的根路径,就不需要替换成空了
 


VUE_APP_API_BASE_URL=http://localhost:9090/Service/
或
VUE_APP_API_BASE_URL=/Service/



devServer: {
    port: 9090,
    open: true,
    https: false,
    proxy: {
      '/Service': {
        target: 'http://iqoo.want.com',
        secure: false,
        changOrigin: true,
      }
    }
  }

环境和配置都没问题的话基本都会生效的(我没遇到的问题除外.......)

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用vue-cli快速搭建前后端分离项目的默认端口是8080,如果需要更改端口,可以按照以下步骤进行操作: 1. 打开项目根目录下的config文件夹,找到index.js文件; 2. 在文件中搜索“8080”,会发现有多处出现这个端口,其中一处如下所示: ``` dev: { // Paths assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: {}, // Various Dev Server settings host: 'localhost', // can be overwritten by process.env.HOST port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined autoOpenBrowser: false, errorOverlay: true, notifyOnErrors: true, poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- // Use Eslint Loader? // If true, your code will be linted during bundling and // linting errors and warnings will be shown in the console. useEslint: true, // If true, webpack will display hints and warnings when your code is not optimized for production. // See https://webpack.js.org/guides/production/#optimization-hints. showEslintErrorsInOverlay: false, } ``` 这里的port就是当前项目使用的端口,将它改成你需要的值即可。 3. 保存文件后,重新启动项目,新的端口就会生效了。例如: ``` npm run dev --port 8888 ``` 或者修改package.json文件中scripts的启动命令: ``` "scripts": { "dev": "vue-cli-service serve --port 8888", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, ``` 然后启动项目: ``` npm run dev ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值