我第一次尝试做一个简单的应用程序,但是每当我尝试导入任何npm包时,我总是得到这个错误。我不确定我做错了什么,因为我使用的是npm包electron-reload
,这不会抛出任何错误。ERROR:
require() of ES Module
这是我的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,我只是不知道该怎么做,或者为什么这个错误会阻止我的开发。我希望软件包可以正常运行,但是没有任何效果。
3条答案
按热度按时间mum43rcc1#
hwid
是一个ESM module,并且您的tsconfig.json
指定使用CommonJS编写模块,CommonJS是require()
函数。tsc
(或其他编译器)将import
语句转换为require()
调用,ESM不允许这样做(如错误所说)。要么使用可能支持ESM的旧版本hwid
,要么将module
更改为'es2020'
并将moduleResolution
设置为'node'
。b1zrtrql2#
在package.json中放入一个带有代码
import('./index.js')
的入口索引.cjs,您已经可以添加"type": "module"
。wydwbb8l3#
尝试:
const Hwid = require('hwid')