用 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;
将 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;