1

我尝试在 Rasperry Pi 上的 Electron 应用程序中运行better-sqlite3 。我在运行时收到来自 TypeORM 的错误:

{
  constructor: 'Error',
  name: 'UnhandledRejection DriverPackageNotInstalledError',
  stack: 'UnhandledRejection DriverPackageNotInstalledError: SQLite package has not been found installed. Try to install it: npm install better-sqlite3 --save\n' +
    '    at process.onRejection (/usr/lib/node/electron-log/src/catchErrors.js:55:18)\n' +
    '    at process.emit (events.js:203:13)\n' +
    '    at processPromiseRejections (internal/process/promises.js:201:33)\n' +
    '    at processTicksAndRejections (internal/process/task_queues.js:86:32)'
}

当我捕捉到由 引发的真正错误时require('better-sqlite3'),我得到:

{
  constructor: 'Error',
  stack: 'Error: /usr/lib/node/better-sqlite3/build/Release/better_sqlite3.node: undefined symbol: _ZN2v82V813DisposeGlobalEPPNS_8internal6ObjectE\n' +
    '    at process.func (electron/js2c/asar.js:140:31)\n' +
    '    at process.func [as dlopen] (electron/js2c/asar.js:140:31)\n' +
    '    at Object.Module._extensions..node (internal/modules/cjs/loader.js:922:18)\n' +
    '    at Object.func (electron/js2c/asar.js:140:31)\n' +
    '    at Object.func [as .node] (electron/js2c/asar.js:140:31)\n' +
    '    at Module.load (internal/modules/cjs/loader.js:735:32)\n' +
    '    at Module._load (internal/modules/cjs/loader.js:648:12)\n' +
    '    at Module._load (electron/js2c/asar.js:717:26)\n' +
    '    at Function.Module._load (electron/js2c/asar.js:717:26)\n' +
    '    at Module.require (internal/modules/cjs/loader.js:775:19)'
}

为了构建更好的sqlite3 7.1.1,我使用了BitBake自动化工具。我创建了一个 BitBake 配方来为 Raspberry Pi 重建 better-sqlite3(之前对 node-sqlite3 工作相同):

SUMMARY = "The fastest and simplest library for SQLite3 in Node.js"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=daaa6378e66cac5c1de3eabc51c6020f"

ELECTRONV = "7.2.3"
ELECTRONREBUILDV = "1.11.0"

SRC_URI = "npm://registry.npmjs.org;name=${PN};version=${PV};noverify=1"

inherit npm

# Rebuild for the right Electron and Node.js version
do_compile_append() {
    npm install --save-dev electron-rebuild@${ELECTRONREBUILDV}
    $(npm bin)/electron-rebuild -f -m ${S} -a ${TARGET_ARCH} -v ${ELECTRONV} -w ${PN}
}

在 RPi 上,我执行了一个file better-sqlite3/build/Release/better_sqlite3.node命令:

better-sqlite3/build/Release/better_sqlite3.node: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=d8679f0f9e500db6bbaa4dc42d629e2d12c28b59, stripped
  • 更好的sqlite3:7.1.1
  • 节点:10.17.0
  • 节点gyp:5.0.3

有什么线索吗?

4

0 回答 0