You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中如何从外部JSON文件动态读取IP地址到变量

解决前端打包后动态修改后端IP的方案
  • 第一步:把data.json放到静态资源目录,避免被打包
    不管你用Vue、React还是其他框架,都有专门的静态资源目录(比如Vue CLI/Create React App/Vite的public文件夹)。直接把data.json放在这个目录下,打包工具会自动将它复制到dist根目录,不会对文件进行编译或打包,这样你就能随时修改dist里的data.json内容。

    建议把你的data.json格式改成对象(更易读取):

    {
      "FRONTEND_IP": "192.168.1.35",
      "BACKEND_IP": "192.168.1.123"
    }
    

    如果坚持用原来的数组格式也可以,后续读取时做对应转换即可。

  • 第二步:运行时异步加载配置文件,不要用import
    删除原来的import data from './data.json'写法,换成在应用初始化时用fetch(或axios)异步加载这个文件:

    通用JS示例:

    // 全局存储配置
    window.APP_CONFIG = {};
    
    // 应用启动前加载配置
    async function loadAppConfig() {
      try {
        const response = await fetch('/data.json');
        const config = await response.json();
        // 如果用原数组格式,转成对象:
        // window.APP_CONFIG = config.reduce((obj, item) => ({...obj, ...item}), {});
        window.APP_CONFIG = config;
      } catch (error) {
        console.error('配置加载失败,使用默认IP');
        // 设置默认值避免应用异常
        window.APP_CONFIG = {
          BACKEND_IP: '127.0.0.1',
          FRONTEND_IP: '127.0.0.1'
        };
      }
    }
    
    // 加载完配置再启动应用
    loadAppConfig().then(() => {
      // 这里初始化你的应用,比如Vue的new Vue()或React的ReactDOM.render()
    });
    

    Vue项目示例(main.js中):

    import { createApp } from 'vue';
    import App from './App.vue';
    
    let app;
    
    async function loadConfig() {
      try {
        const res = await fetch('/data.json');
        const config = await res.json();
        app.config.globalProperties.$APP_CONFIG = config;
      } catch (err) {
        app.config.globalProperties.$APP_CONFIG = {
          BACKEND_IP: '127.0.0.1',
          FRONTEND_IP: '127.0.0.1'
        };
      }
      app.mount('#app');
    }
    
    app = createApp(App);
    loadConfig();
    
  • 第三步:在API请求中使用动态IP
    把原来硬编码的IP换成加载到的配置值,比如:

    // 通用示例
    const backendBaseUrl = `http://${window.APP_CONFIG.BACKEND_IP}:你的后端端口`;
    axios.get(`${backendBaseUrl}/api/data`);
    
    // Vue组件内示例
    this.$axios.get(`http://${this.$APP_CONFIG.BACKEND_IP}:你的后端端口/api/data`);
    
  • 验证方法
    打包生成dist后,修改dist/data.json里的BACKEND_IP,启动前端服务后,查看浏览器网络请求的地址是否已更新为修改后的IP,无需重新打包即可生效。

内容的提问来源于stack exchange,提问作者Anders S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:20:26