用 ESM 导入替换 JS require('...')

Replacing JS require('...') with ESM imports

node-fetch 更新到 v3 后,尝试启动我的 Electron 应用程序时出现以下 JavaScript 错误消息:

未捕获的异常: 错误 [ERR_REQUIRE_ESM]:不支持 ES 模块 (...) 的 require()。 而是将所需的 ... 更改为动态 import() ...

我发现 我应该更换

const fs = require('fs');

与:

import fs from "fs";

但是如何以同样的方式替换下面的内容?

// Modules to control application life and create native browser window
const {
  app,
  session,
  BrowserWindow
} = require('electron');

您需要将包名替换为带有括号的变量或函数

import { app, session, BrowserWindow } from "electron";

这肯定有效

通常,您会像使用 fs 和其他 ES 模块一样执行此操作:

import { app, session, BrowserWindow } from "electron";

但是,我认为您不能直接使用 Electron 执行此操作,因为它是 CommonJS module 并且并非所有模块都直接命名为导出。

您应该能够通过默认导入导入您需要的内容:

import electron from "electron";
const { app, session, BrowserWindow } = electron;