Knowledge / Electron / nodeモジュールのABI差によるnpm runエラー 1 min read

nodeモジュールのABI差によるnpm runエラー

目次

事象

以下のようなエラーによって、npm runが通らない

  The module xxx was compiled against a different Node.js version using NODE_MODULE_VERSION 140. This version of Node.js requires NODE_MODULE_VERSION 137. Please try re-compiling or re-installing the module

原因

例として、better-sqlite3のモジュールで発生しましたが、配布されているモジュールがnode向けにビルドされていて、electronにそのまま使えないためでした。

解決方法

electron-rebuildをnpm installして、対象モジュールについてrebuildするようにした所、解決しました。 package.jsonに以下のように書くと、npm installだけで自動的にリビルドされます。

  "devDependencies": {
  "electron": "^39.0.0",
  "electron-builder": "^26.4.0",
  "electron-rebuild": "^3.2.9"
},
"scripts": {
  "start": "electron .",
  "dev": "electron . --dev",
  "build": "electron-builder",
  "postinstall": "electron-rebuild -f -w better-sqlite3"
}