2016-12-15 8 views
0

J'écris une application avec nwjs, et utilise nwjs-updater comme système de mise à jour.path.resolve (__ dirname, 'tools/unzip.exe') plantant sans message sous Windows 10

Malheureusement, j'ai cette question en essayant d'utiliser Décompressez par C. Spieler (docs: https://www.mkssoftware.com/docs/man1/unzip.1.asp) sur Windows 10.

Lorsque je tente d'invoquer le __dirname var, l'application se bloque juste. Voici le code où il échoue:

// Code imported from https://github.com/Aufree/nwjs-updater/blob/master/basic/updater.js 
// Only added console logs for debugging the issue. 

var path = require('path'); 

//(...) 
//line 253: 
win: function(filename, cb, manifest, temporaryDirectory){ 
    var destinationDirectory = getZipDestinationDirectory(filename, temporaryDirectory), 
     unzip = function(){ 
     exec('"' + path.resolve(__dirname, 'tools/unzip.exe') + '" -u -o "' + 
      filename + '" -d "' + destinationDirectory + '" > NUL', function(err){ 
      if(err){ 
      return cb(err); 
      } 

      cb(null, path.join(destinationDirectory, getExecPathRelativeToPackage(manifest))); 
     }); 
     }; 

    console.log(destinationDirectory);       // Works fine 
    console.log(__dirname);          // Never gets to print 
    console.log(path.resolve(__dirname, 'tools/unzip.exe'));  // Never gets to this line 
    fs.exists(destinationDirectory, function(exists){ 
    if(exists) { 
     del(destinationDirectory, {force: true}, function (err) { 
     if (err) { 
      cb(err); 
     } 
     else { 
      unzip(); 
     } 
     }); 
    } 
    else { 
     unzip(); 
    } 
    }); 

} 
//(...) 

Voici comment je commence la variable "updater":

var pkg = require(link_to_package.json); 
var upd = new updater(pkg); 

Toute idée sur l'endroit où pourrait être le problème?

Merci.

+0

Quelle est l'erreur EXACT (mot à mot) que vous obtenez dans la console? Et, 'exec 'est défini quelque part? Pourquoi pensez-vous que la faute est avec '__dirname'? – jfriend00

+0

C'était le problème, car je n'obtenais aucune erreur dans la console. – Leandroc

+0

La faute est avec '__dirname' car il échoue sur la ligne où je fais simplement' console.log (__ dirname); ' – Leandroc

Répondre

1

Par this problem report, il semble que __dirname ne fonctionne pas dans node-webkit car il ne définit pas correctement toutes les variables de niveau module.

Les solutions de rechange suggérées sont d'utiliser process.cwd().

+0

Finalement, j'ai juste échangé tout le système de fermeture éclair. Mais oui, cela a aidé. Merci. – Leandroc