类型 “Window & typeof globalThis” 上不存在属性“electronAPI”

1. electron 主进程和渲染进程互相通信
// preload.s

// 可以在 vue 文件中使用的 window 全局方法,需要在 electron-api.ts 文件中去声明 方法
import { ipcRenderer } from 'electron';
contextBridge.exposeInMainWorld('electronAPI', {
  getFilePath: () => ipcRenderer.invoke('get-file-path')
})
// main.ts

import { app, BrowserWindow, ipcMain } from 'electron';
ipcMain.handle('get-file-path', async () => {
  const path = join(__dirname, '../../src/utils/test.js');
  console.log('-----------------', path );
  return path;
});

然后在vue文件中去使用

// App.vue

const exportFile = async () => {
  const res = await window.electronAPI.getFilePath();
  console.log(res);
};

window上未找到类型
在这里插入图片描述

2. 解决方案

查看 electron 官网进程通信在ts中使用,可以全局申明文件(render.d.ts),我这里项目搭建时已经存在 electron-env.d.ts,
添加如下代码即可。

// electron-env.d.ts
export interface IElectronAPI {
	// getFilePath 方法时preload.ts中使用的方法,后面添加方法,此处也要同步申明
  getFilePath: () => Promise<void>;
}

declare global {
  interface Window {
    electronAPI: IElectronAPI;
  }
}

添加完成后,需要在tsconfig.json中配置 ts 路径

// tsconfig.json

"include": [
    ...,
    "electron/electron-env.d.ts", // 相对 tsconfig.json 的路径
  ],

这样就解决了 window 上的属性问题(属性丢失)
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值