vite请求代理缓存

27 阅读1分钟
//vite.config.js
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { createProxyMiddleware } from "http-proxy-middleware";
import proxyMiddleware from "./proxyMiddleware.js";

export default defineConfig({
  plugins: [vue()],
  server: {
    proxy: {
      "/api": {
        target: "http://localhost:3000",
        changeOrigin: true,
        configure: proxyMiddleware(),
      },
    },
  },
});
import fs from "node:fs";
import path from "node:path";

const logPath = path.join(__dirname, "proxyLog.json");
let logs = {};
if (fs.existsSync(logPath)) {
  logs = JSON.parse(fs.readFileSync(logPath, "utf8"));
}
export function createLoggingProxyMiddleware() {
  return (proxy) => {
    proxy.on("proxyRes", (response, req, res) => {
      let data = "";
      response.on("data", (chunk) => (data += chunk.toString("utf8")));
      response.on("end", () => {
        const url = req.url;
        const method = req.method.toLowerCase();
        const tag = url + "/" + method;
        logs[tag] = {
          url,
          method,
          data,
        };
        fs.writeFileSync(logPath, JSON.stringify(logs, null, 2));
      });
    });
  };
}

export default createLoggingProxyMiddleware;