NodeJS: как исправить «не удается найти модуль ‘node-windows’ при компиляции с помощью pkg

#node.js

#node.js

Вопрос:

Работая над конкретным проектом, я обнаружил, что могу компилировать свои консольные приложения с помощью модуля pkg. После его установки я протестировал его в своем основном приложении, и оно сработало. Когда я попробовал его «Service.js » (установщик сервиса в проекте) Я получил предупреждение (несмотря на то, что у меня есть node-windows в папке node_modules)

     Warning Cannot find module 'node-windows' from 'C:UsersUchennaDocumentsNodeJSGhost'
 

C:UsersUchennaDocumentsNodeJSGhostService.js

Я попытался проигнорировать это и продолжил запуск «Service.exe —install»затем я получил эту ошибку:

 Error: Cannot find module 'node-windows'
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 (internal/modules/cjs/loader.js:592:15)
    at Function.Module._resolveFilename (pkg/prelude/bootstrap.js:1280:46)
    at Function.Module._load (internal/modules/cjs/loader.js:518:25)
    at Module.require (internal/modules/cjs/loader.js:648:17)
    at Module.require (pkg/prelude/bootstrap.js:1159:31)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (C:snapshotGhostService.js:0:0)
    at Module._compile (pkg/prelude/bootstrap.js:1254:22)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:711:10)
    at Module.load (internal/modules/cjs/loader.js:610:32)
 

Вот код в Service.js файл

 const Service = require("node-windows").Service;

class ServiceInstaller
{
    constructor () {
        var logServerService = new Service({
            name: "Log Server Service",
            description: "Listens for data to log",
            script: "./DataLoggerServer.exe"
        });

        var mainService = new Service({
            name: "Main Application Service",
            description: "Logs data (or errors) to the Log Server Service",
            script: "./Ghost.exe"
        });
    }

    installServices () {
        logServerService.install();
        mainService.install();

        logServerService.on("install", function () {
            logServerService.start();
            console.log("Successfully installed the 'Log Server' servicen");
        });

        mainService.on("install", function () {
            mainService.start();
            console.log("Successfully installed the main servicen");
        });
    }

    uninstallServices () {
        logServerService.uninstall();
        mainService.uninstall();

        logServerService.on("install", function () {
            logServerService.start();
            console.log("Successfully uninstalled the 'Log Server' servicen");
        });

        mainService.on("install", function () {
            mainService.start();
            console.log("Successfully uninstalled the main servicen");
        });
    }
}

var installer = new ServiceInstaller();

if (process.argv[2] == "install") {
    installer.installServices();
}
else if (process.argv[2] == "uninstall") {
    installer.uninstallServices();
}
else {
    console.log("Not running...n");
}
 

Комментарии:

1. Черт… Я тоже сталкиваюсь с этим. Кажется, может быть невозможно упаковать node-windows в устанавливаемое приложение electron?

2. Я тоже так думаю. Я просто хочу, чтобы у кого-нибудь было исправление для этого

Ответ №1:

Некоторые пакеты при сборке с использованием pkg отображают эту ошибку.

Для меня это был bcrypt.

Просмотрите сообщение об ошибке и выясните, на какой исполняемый файл ссылается сообщение об ошибке. Затем скопируйте этот исполняемый файл из папки node_modules (в основном это будет из этой папки) и вставьте его рядом с исполняемым файлом.

Это решило проблему для меня

Комментарии:

1. Большое вам спасибо за ваш ответ. Я попробую это сразу

2. Если вы правильно поняли, поддержите мой ответ, чтобы другие, у кого есть похожие проблемы, могли решить их

3. Это сработало. Я также попытался протестировать несколько вещей. Оказывается, что мы используем «npm install —save <module>» в проекте, в котором вы работаете, двоичные проблемы также будут решены.

4. Я не понял, можете ли вы объяснить это еще раз?

5. Я попытался использовать «npm install —save <module>» в каталоге проекта, и это тоже сработало.