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

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

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

我在https://stackoverflow.com/questions/69081410/error-err-require-esm-require-of-es-module-not-supported找到了我应该更换的

const fs = require('fs');

和:

import fs from "fs";

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

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

回答1

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

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

但是,我认为您不能直接使用 Electron 执行此操作,因为它是一个 https://en.wikipedia.org/wiki/CommonJS 并且并非所有模块都直接命名为导出。

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

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

回答2

你需要用变量或函数替换包名称并用括号括起来

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

这肯定有效

相似文章

随机推荐

最新文章