electron 获取电脑mac地址遇到的坑

最近公司需求做一个exe程序,无奈只是一个小前端,只能使用electron来实现了

其中一个需求就是每个账号绑定唯一的电脑。

这里选用网卡的mac地址来做这个唯一的字段。

代码很简单 测试也很顺利 

const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
      nodeIntegration: true,
      contextIsolation: false,
      //enableRemoteModule:true,
    }
  })

preload.js

window.addEventListener('DOMContentLoaded', () => {
  var os = require("os");
  sessionStorage.mac = os.networkInterfaces().WLAN[0].mac
  sessionStorage.name = os.hostname()
  console.log(sessionStorage.getItem('mac'))
  console.log(sessionStorage.getItem('name'))
    const replaceText = (selector, text) => {
      const element = document.getElementById(selector)
      if (element) element.innerText = text
    }
  
    for (const type of ['chrome', 'node', 'electron']) {
      replaceText(`${type}-version`, process.versions[type])
    }
  })

万万没想到 交付的时候发生无法获取mac的错误

最终更改成这个样子

window.addEventListener('DOMContentLoaded', () => {
  var os = require("os");
  if(os.networkInterfaces().WLAN){
    sessionStorage.mac = os.networkInterfaces().WLAN[0].mac
  }else{
    sessionStorage.mac = os.networkInterfaces()['以太网'][0].mac
  }
  sessionStorage.name = os.hostname()
  console.log(sessionStorage.getItem('mac'))
  console.log(sessionStorage.getItem('name'))
    const replaceText = (selector, text) => {
      const element = document.getElementById(selector)
      if (element) element.innerText = text
    }
  
    for (const type of ['chrome', 'node', 'electron']) {
      replaceText(`${type}-version`, process.versions[type])
    }
  })

通过os.networkInterfaces()获取网卡地址的方法会遇到网线/无线上网这两种情况

个别情况下WLAN这个数组会是“以太网”

这三个大字困扰我半天。。。。还是太年轻啊

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值