#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
?