Je débute en nodejs et je souhaite créer une application nodejs :
installable (via exe, msi, ...) en mode service, c'est-à-dire tourne sur une machine allumée, mais sans aucune session ouverte ou vérouillée (donc toutes fermées)
fonctionnant sur Windows et linux
J'ai trouvé node-windows et node-linux mais j'ai quelques incompréhensions :
Events et les fonctions [exemple : svc.on('install', ...) et svc.install() ]
Ai-je bien compris : Les fonctions lancent les events lorsqu'elles se terminent ? [Call svc.install => fait son job => trigger svc.on('install', ...)]
Je souhaite aussi que ce service est un genre de "pop up" de paramétrage. Comme par exemple le menu de Wamp dans la barre des taches en bas a droite. Est-ce possible ?
Voilà un hello world que j'ai fait (écrire 10 messages dans un fichier log toutes les 5 secondes).
J'ai deux problèmes :
J'ai créer un 2ème utilisateur admin sur mon poste : AdminDev . La service s'installe nickel, mais lorsque je veux le lancer le service ne parvient pas à ouvrir de session..
Du coup j'ai voulut tester sans spécifier d'utilisateur (en commentant les lignes), mais rien ne se passe. app.js ne crée aucun fichier (ou je ne sait pas où il se trouve), rien n'est écrit dans la console avec les console.log(), pas d'erreur dans le journal d'événement, juste ce Warning:
Citation:
Child process [13316 - D:\programmes\NodeJS\node.exe --harmony D:\dev\nodejs\service\node_modules\node-windows\lib\wrapper.js --file D:\dev\nodejs\app.js --log "Hello Service wrapper" --grow 0.25 --wait 1 --maxrestarts 3 --abortonerror n --stopparentfirst undefined] finished with 1
J'ai plein de demande d'autorisation (lancement d'un .exe, création d'une entrée dans le journal d'événement), y a-t-il un moyen d'avoir juste la demande d'autorisation du .exe ?
/** IMPORT **/var Service = require('node-windows').Service,
EventLogger = require('node-windows').EventLogger,
logger = newEventLogger('Hello World');
const fs = require('fs');
WriteLog('Imports done');
/** GLOBAL VAR **/var fileName = 'nodeService.log';
/** Service config **/WriteLog('Service configuration :');
var svc = newService({name:'Hello Service',
description: 'NodeJs service test',
script: 'D:\\dev\\nodejs\\app.js'});
WriteLog('Initialization OK');
/*svc.logOnAs.account = 'AdminDev';svc.logOnAs.password = '***********';*/WriteLog('Credentials OK');
// Listen for the "install" event, which indicates the// process is available as a service.
svc.on('install',function(){WriteLog('Starting service...');
svc.start();
WriteLog('Started');
});
WriteLog("'install' trigger OK");
// Listen for the "start" event and let us know when the// process has actually started working.
svc.on('start',function(){
logger.info('Le service a demarrer');
console.log(svc.name+' started!');
});
WriteLog("'start' trigger OK");
// Install and runWriteLog('Starting install...');
svc.install();
functionWriteLog(log){var timing = newDate(),
log = timing + ' - install.js | ' + log + '\r\n';
fs.appendFile('service.log', log, (err) => {// throws an error, you could also catch it hereif(err){
logger.error('Error in Logger : \n' + err);
console.log(err);
throw err;
}});
}