Skip to content
Advertisement

Replacing JS require(‘…’) with ESM imports

After updating node-fetch to v3, the following JavaScript error message appears when trying to launch my Electron app:

Uncaught Exception: Error [ERR_REQUIRE_ESM]: require() of ES Module (…) not supported. Instead change the required … to a dynamic import() …

I have found here that I should replace

const fs = require('fs');

with:

import fs from "fs";

But how to replace in the same fashion the following?

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

Advertisement

Answer

Typically, you would do this as you have done it with fs and would do with other ES modules:

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

However, I don’t believe you can do this directly with Electron as it’s a CommonJS module and not all the modules are directly named as exports.

You should be able to import what you need via the default import however:

import electron from "electron";
const { app, session, BrowserWindow } = electron;
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement