Зависимости сборки пряжи ia32

#node.js #npm #yarnpkg

Вопрос:

Я использую Windows 10 Pro на архитектуре x64.

Я пытаюсь скомпилировать свой проект NodeJS с pkg помощью as x86 EXE . Проблема, с которой я столкнулся, pkg заключается в том, что он не связывает *.node файлы в выходной файл.

Мой проект использует sqlite3 и ffi-napi / ref-napi . Поскольку я нахожусь в системе x64, npm автоматически создает эти пакеты в файлы win32-x64 .node . Я узнал, что могу исправить это с помощью

 npm install package_name --build-from-source --target_platform=win32 --target_arch=ia32
 

Это подготовит ia32 (x86) версии .node native add-on для каждого пакета.

Теперь, когда я составляю свой проект

 pkg core.js --targets=node14-win-x86
 

и запустите вывод core.exe , я получу следующий вывод

 Error: No native build was found for platform=win32 arch=ia32 runtime=node abi=72 uv=1 libc=glibc node=12.18.1
    loaded from: C:snapshotcorenode_modulesref-napi
 

Я узнал, что причина этого в том, что компоновщик никогда не включал ref-napi .node native add-on в мой проект. Это можно облегчить, сделав

 yarn add ref-napi
 

Вот где возникает моя проблема, после завершения этой команды, и я выполняю свое приложение

 Error: Cannot find module 'C:snapshotcorenode_modulessqlite3libbindingnapi-v3-win32-ia32node_sqlite3.node'
Require stack:
- C:snapshotcorenode_modulessqlite3libsqlite3-binding.js
- C:snapshotcorenode_modulessqlite3libsqlite3.js
- C:snapshotcorecore.js
 

Это связано с тем , что во время выполнения yarn , он видит, что моя системная архитектура такова x64 . Затем он удаляет ранее скомпилированный ia32 .node файл, когда я делал npm install это сверху, и помещает win32-x64 .node файл на его место.

Мой вопрос в том, как я могу сказать yarn, чтобы вместо этого загружать ia32 .node дополнения win32-x64 ?