Проблема с использованием установки NPM программно, когда код компилируется в двоичный файл с использованием Pkg - PullRequest
0 голосов
/ 09 сентября 2018

Я использую NPM программно в проекте, который в конце компилируется в двоичный файл. При использовании npm.commands.install при запуске двоичного файла выдается следующая ошибка:

[2018/09/08 19:55:59:0503] LOG: POST -> /processor/mutator/install
{ Error: Cannot find module 'node-gyp/bin/node-gyp'
1) If you want to compile the package/file into executable, please pay attention to compilation warnings and specify a literal in 'require' call. 2) If you don't want to compile the package/file into executable and want to 'require' it from filesystem (likely plugin), specify an absolute path in 'require' call using process.cwd() or process.execPath.
    at Function.Module._resolveFilename (module.js:545:15)
    at Function.Module._resolveFilename (pkg/prelude/bootstrap.js:1278:46)
    at resolveFileName (/snapshot/chisel/node_modules/npm/node_modules/npm-lifecycle/node_modules/resolve-from/index.js:29:39)
    at resolveFrom (/snapshot/chisel/node_modules/npm/node_modules/npm-lifecycle/node_modules/resolve-from/index.js:43:9)
    at module.exports (/snapshot/chisel/node_modules/npm/node_modules/npm-lifecycle/node_modules/resolve-from/index.js:46:41)
    at Object.<anonymous> (/snapshot/chisel/node_modules/npm/node_modules/npm-lifecycle/index.js:18:31)
    at Module._compile (pkg/prelude/bootstrap.js:1252:22)
    at Object.Module._extensions..js (module.js:661:10)
    at Module.load (module.js:563:32)
    at tryModuleLoad (module.js:503:12)
    at Function.Module._load (module.js:495:3)
    at Module.require (module.js:594:17)
    at Module.require (pkg/prelude/bootstrap.js:1157:31)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/snapshot/chisel/node_modules/npm/lib/utils/lifecycle.js:4:19)
    at Module._compile (pkg/prelude/bootstrap.js:1252:22) code: 'MODULE_NOT_FOUND', pkg: true }

Я пытался сделать npm install node-gyp внутри node_modules/npm, а также внутри моего собственного проекта, чтобы Pkg включил его в двоичный файл.

Не уверен, возможно ли переключение на child_process, пока Node.js и NPM упакованы внутри двоичного файла (я пытаюсь сохранить двоичный файл независимым от Node.js и NPM).

Любая помощь / альтернативы будут оценены.

1 Ответ

0 голосов
/ 09 сентября 2018

Компилятор pkg объединяет весь ваш скрипт node_module в скомпилированный двоичный файл.Но когда одна из зависимостей использует некоторые внешние двоичные файлы, такие как исполняемый файл node-gyp (внутри node_modules / node-gyp / bin / node-gyp), phanthom js и т. Д., Pkg не может выполнить компиляцию.Вам придется избегать этих зависимостей, если вы хотите скомпилировать свой код с помощью модуля pkg.

В противном случае вы можете реорганизовать модуль node-gyp и отделить исполняемый файл, который они поставляют, с вашим скомпилированным двоичным файлом, который может быть сложным.альтернатива и отнимает много времени.

...