当前位置: 首页 > 知识库问答 >
问题:

为什么在vue.config.js404代理

李跃
2023-03-14

我有一个小的前端和后端分离的项目,开发环境和生产环境,所以我想设置代理来调用api。vue/cli版本为4.6。5.

文件结构:

src
 axios
  api.js
  request.js
 components
  home
   LastBlogs.vue
.env.development
.env.production
package.json
vue.config.js

.env.development:

    NODE_ENV = 'development'
    
    VUE_APP_BASE_API = '/dev-api'
    
    VUE_APP_API_ADDRESS= 'http://localhost:8080/blog/'

.环境。制作:

    NODE_ENV = 'production'
    
    # base api
    VUE_APP_BASE_API = '/api'
    
    # api publicPath
    VUE_APP_API_ADDRESS= 'http://localhost:8080/blog'

vue.config.js:

    'use strict'
    var path = require('path')
    module.exports = {
        configureWebpack: {
            devtool: 'source-map'
        },
        assetsDir: 'static',
        devServer: {
            contentBase: path.join(__dirname, 'dist'),
            compress: true,
            port: 8001,
            proxy: {
                [process.env.VUE_APP_BASE_API]: {
                  target: [process.env.VUE_APP_API_ADDRESS], // api地址
                  changeOrigin: true,
                  ws: true,
                  pathRewrite: {
                    ['^' + process.env.VUE_APP_BASE_API]: '/api',
                  }
                }
              }
        }
    }

axios:

    import axios from 'axios'
    import qs from 'qs'
    // import {app} from '../main.js'
    
    console.log(process.env)
    
     /****** 创建axios实例 ******/
    const request = axios.create({
        baseURL: process.env.VUE_APP_API_ADDRESS,
        timeout:5000
    })
    
    // some code of interceptors
    export default request;

应用程序编程接口。js:

    import request from './request.js'
    
    var api = process.env.VUE_APP_BASE_API //'/api'
    export function getLastBlogs(){
        return request({
            url: api+'/blog/lastBlogs',
            method: 'get'
        })
    }

我在vue文件中调用api如下:

    <script>
    import {getLastBlogs} from '@/axios/blogApi.js'
    export default {
        name: 'LastBlogs',
        data() {
            return {
                blogs: ["AAAA", "BBBB"]
            }
        },
        created: async function(){
                
            let res = await getLastBlogs();
            this.blogs = res.data
            }
    }
    </script>

我该怎么办?谢谢

共有1个答案

申宜
2023-03-14

因此,您正在配置Vue CLI dev server(在端口8001上运行)以将所有请求代理到/apihttp://localhost:8080/blog/api(服务器),但同时将Axios配置为使用baseURL:process。环境。VUE_应用程序_API_地址。。。这意味着Axios将所有请求直接发送到您的服务器,而不是代理服务器。。。

从Axios配置中删除process.env.VUE_APP_API_ADDRESS

我也相信你的路径重写选项在代理配置是不正确的。

  1. 您将请求发送到/dev api/blog/lastBlogs

尝试将pathRewrite更改为[process.env.VUE\u APP\u BASE\u API]:'/API'

 类似资料:
  • 问题内容: 这段代码使我凝视了几分钟: 我以前从未见过,而且我也不知道Java有一个“ loop”关键字(NetBeans甚至没有像关键字一样给它上色),并且它在JDK 6中可以很好地编译。 有什么解释? 问题答案: 这不是一个。 用法:

  • 问题内容: 我想知道以下代码的行为背后的机制是什么: 我的理解是不 返回 函数,而是 关闭连接/结束请求 。这可以解释为什么我仍然可以在命令后执行代码(我查看了快速源,但它似乎不是异步函数)。 还有其他我可能会想念的东西吗? 问题答案: 当然可以结束HTTP响应,但是它对您的代码没有做任何特殊的事情。 即使您已结束回复,也可以继续做其他事情。 但是,您 无法 做的是利用进行任何有用的操作。由于响应

  • 问题内容: 我被告知不要像这样添加内容: 这有什么问题?我还有什么其他选择? 问题答案: 每次设置时,都必须解析HTML,构造DOM并将其插入文档中。这需要时间。 例如,如果有数千个div,表,列表,图像等,则调用将导致解析器重新重新解析 所有这些内容 。这也可能破坏对已经构造的DOM元素的引用,并引起其他混乱。实际上,您要做的就是在末尾附加一个新元素。 最好只致电: 这样,将不会再次解析的现有内

  • 问题内容: 我不知道为什么一个类是一个,但是一个实例只是一个普通的 问题答案: 这有助于解释器确保类级属性和方法的键只能是字符串。 在其他地方,Python是一种“成年人同意语言”,这意味着对象的指示由用户公开和可变。但是,对于类的类级属性和方法,如果可以保证键是字符串,则可以在类级简化和加快用于属性和方法查找的常见案例代码。尤其是,通过假定类dict键为字符串,可以简化和加快用于新型类的__mr

  • 在安装并启用了ESlint和Prettier的Nuxt应用程序中,我切换到了Visual Studio代码。 当我打开一个.vue文件并按cmd+shift+p并选择格式化文档时,我的文件根本不会被格式化。 My.Prettierrc设置: 我有这么多的源代码行,所以我不能手动格式化它们。我做错了什么?

  • 风格: 日志消息:10-10 13:20:01.184:E/AndroidRuntime(1417):致命异常:main 10-10 13:20:01.184:E/AndroidRuntime(1417):android。看法WindowManager$BadTokenException:无法添加窗口--android令牌。应用程序。本地活动管理器$LocalActivityRecord@411e