#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>» в каталоге проекта, и это тоже сработало.