使用Electron 开发了一个应用程序报了JavaScript报错了,如下:

A JavaScript error occurred in the main process
Uncaught Ecxeption:
ReferenceError:fetch is not definded
 at Timeout._onTimeout

这个错误的原因是我在js中没有引入必须的模块所致。
我的是没有添加fetch模块,直接添加上就可以了,如下:

// Modules to control application life and create native browser window
const { app, BrowserWindow, Menu, globalShortcut } = require('electron')
const fetch = require('electron-fetch').default
const path = require('path')

 

报错原因

Electron 主进程(Node 环境)默认没有浏览器侧的 fetch,直接调用会报 ReferenceError: fetch is not defined。

解决办法

  • Node 18 及以上已内置全局 fetch,升级 Electron/Node 版本即可。
  • 旧版本可安装并使用 node-fetch 或 undici。
  • 渲染进程(浏览器环境)可直接使用 fetch。
  • 注意区分主进程与渲染进程的全局对象差异。

相关阅读

参考资料