我第一次尝试制作一个简单的应用程序,但每当我尝试导入任何npm包时,都会收到这个错误。我不确定我做错了什么,因为我使用的是npm包electron-reload
,这不会引发任何错误。
ERROR:
ES模块的require((
这是我的tsconfig.json:
{
"compilerOptions": {
"target": "ES5",
"module": "CommonJS",
"outDir": "./app/js/",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
},
"exclude": ["./app/js/**/*.js"],
"compileOnSave": true
}
这是抛出错误的代码:
import Hwid from "hwid";
ipcMain.on("get-hwid", (event) => {
console.log(Hwid());
});
最后,这是我的BroswerWindow
代码:
const window = new BrowserWindow({
width: 700,
frame: false,
height: 700,
resizable: false,
transparent: true,
roundedCorners: true,
icon: path.join(__dirname, "../design/imgs/dully_logo.png"),
webPreferences: {
contextIsolation: false,
nodeIntegration: true,
preload: path.join(__dirname, "preload.js"),
devTools: false,
},
});
window.loadFile(path.join(__dirname, "../design/index.html"));
我使用TypeScript是因为我更喜欢它而不是普通的JS,我只是纠结于该做什么,或者为什么这个错误会阻止我的开发。我希望包能正常运行,但什么都不起作用。
放置一个条目索引cjs代码为import('./index.js')
,在package.json中您已经可以添加"type": "module"
。
hwid
是一个ESM模块,您的tsconfig.json
指定使用CommonJS编写模块,CommonJS是require()
函数。tsc
(或其他编译器(将import
语句转换为require()
调用,这是ESM不允许的(正如错误所示(。使用可能支持ESM的hwid
的旧版本,或者将module
更改为'es2020'
并将moduleResolution
设置为'node'
。
尝试:const Hwid = require('hwid')
您可能需要检查您的bundler(Webpack、Vite等(是否正常工作,或者如果您还没有开始使用它。
进一步阅读
- 关于Electron第21457期的评论