path.resolve(__dirname, 'tools/unzip.exe') 在 Windows 10 上崩溃且没有消息

path.resolve(__dirname, 'tools/unzip.exe') crashing with no message on Windows 10

我正在用 nwjs 编写一个应用程序,并使用 nwjs-updater 作为更新系统。

不幸的是,我在 Windows 10.

上尝试使用 C. Spieler(文档:https://www.mkssoftware.com/docs/man1/unzip.1.asp)解压缩时遇到了这个问题

当我尝试调用 __dirname 变量时,应用程序崩溃了。 这是失败的代码:

// 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();
    }
  });

}
//(...)

下面是我如何启动 "updater" 变量:

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

知道问题出在哪里吗?

谢谢。

根据 this problem report,似乎 __dirname 在 node-webkit 中不起作用,因为它没有正确定义所有模块级变量。

建议的解决方法是使用 process.cwd()