Vue3 + Electron框架读取程序外部配置文件

发布时间:2024年01月17日

网上找了一堆都不行,根据这个步骤来肯定能用

1. 在项目下新建一个config.json文件

2. json文件中写入一些配置

3.?vue.config.js中配置打包时把config.json文件copy到应用目录下

  pluginOptions:{
    electronBuilder:{
      nodeIntegration:true,
      builderOptions: {
        extraResources: [
          { "from": "./config.json", "to": "../" }
        ],
        nsis: {
          allowToChangeInstallationDirectory: true,
          oneClick: false,
          installerIcon: "./public/safeicon.ico", //安装logo
          installerHeaderIcon: "./public/safeicon.ico" //安装logo
        },
        win: {
          icon: './public/safeicon.ico' //打包windows版本的logo
        },
        productName: "APP", //应用的名称
      }
    }
  }

4. 修改 electorn 的入口文件 background.js 配置

  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    title: 'APPName',
    webPreferences: {
      nodeIntegration: true,  // 允许html页面上的javascipt代码访问nodejs 环境api代码的能力
      enableRemoteModule: true, // 是否允许使用remote
      contextIsolation: false,
      // 加载本地图片
      webSecurity: false, // 允许跨域
      webviewTag: true // 允许webview
    },
    icon: "app://./safeicon.ico",
    show: false,
    autoHideMenuBar: true, // 隐藏顶部工具栏,生产环境时设置为true
    frame: false // 无边框
  })

主要是开启这两个配置

? ? ? nodeIntegration: true, ?// 允许html页面上的javascipt代码访问nodejs 环境api代码的能力
? ? ? enableRemoteModule: true, // 是否允许使用remote

5.? 新增工具类 src\utils\getConfig.js

const path = window.require && window.require("path");
const fs = window.require && window.require("fs");
const electron = window.require && window.require('electron')

export function getSystem() {
  //这是mac系统
  if (process.platform == "darwin") {
    return 1;
  }
  //这是windows系统
  if (process.platform == "win32") {
    return 2;
  }
  //这是linux系统
  if (process.platform == "linux") {
    return 3;
  }
}
/**
 *
 * @returns 获取安装路径
 */
export function getExePath() {
  // return path.dirname("C:");
  return path.dirname(electron.remote.app.getPath("exe"));
}
/**
 *
 * @returns 获取配置文件路径
 */
export function getConfigPath() {
  if (getSystem() === 1) {
    return getExePath() + "/config.json";
  } else {
    return getExePath() + "\\config.json";
  }
}
/**
 * 读取配置文件
 */
export function readConfig() {
  return new Promise((res, rej) => {
    console.log("fs", fs)
    fs.readFile(getConfigPath(), "utf-8", (err, data) => {
      let config = ""
      if (data) {
        //有值
        config = JSON.parse(data)
      }
      res(config)
    })
  })
}

6. 使用读取配置

import { readConfig } from '@/utils/getConfig.js'

if (process.env.NODE_ENV !== "development") {
  (async function () {
    const res = await readConfig()
    console.log(res);
    axios.defaults.baseURL = "http://"+res.ip+":"+res.port;
  })()
} else {
  axios.defaults.baseURL = "/api";
}

我此处是判断是否是开发环境,不是开发环境下就去读取 config.json 的配置。你们根据实际情况调整。

ctrl + shift + i 开启控制台查看配置已生效

?

文章来源:https://blog.csdn.net/guo__hang/article/details/135642931
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。