typescript 电子:ES模块的require()

1yjd4xko  于 2023-01-14  发布在  TypeScript
关注(0)|答案(3)|浏览(277)

我第一次尝试做一个简单的应用程序,但是每当我尝试导入任何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,我只是不知道该怎么做,或者为什么这个错误会阻止我的开发。我希望软件包可以正常运行,但是没有任何效果。

mum43rcc

mum43rcc1#

hwid是一个ESM module,并且您的tsconfig.json指定使用CommonJS编写模块,CommonJS是require()函数。tsc(或其他编译器)将import语句转换为require()调用,ESM不允许这样做(如错误所说)。要么使用可能支持ESM的旧版本hwid,要么将module更改为'es2020'并将moduleResolution设置为'node'

b1zrtrql

b1zrtrql2#

在package.json中放入一个带有代码import('./index.js')的入口索引.cjs,您已经可以添加"type": "module"

wydwbb8l

wydwbb8l3#

尝试:const Hwid = require('hwid')

相关问题