Home > front end >  Replacing JS require('...') with ESM imports
Replacing JS require('...') with ESM imports

Time:05-15

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');

CodePudding user response:

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;

CodePudding user response:

U need replace package name with variable or functions with brackets around them

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

This will work for sure

  • Related