我正在使用nwjs编写应用程序,并使用nwjs-updater作为更新系统。
不幸的是,在尝试使用C. Spieler(文档:https://www.mkssoftware.com/docs/man1/unzip.1.asp)在Windows 10上解压缩时,我遇到了这个问题。
当我尝试调用__dirname
var时,应用程序崩溃了。
这是失败的代码:
// 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();
}
});
}
//(...)
这是我如何启动"更新程序"变量:
var pkg = require(link_to_package.json);
var upd = new updater(pkg);
关于问题可能出在哪里?
感谢。
答案 0 :(得分:1)
每this problem report,似乎__dirname
在node-webkit中不起作用,因为它没有正确定义所有模块级变量。
建议的解决方法是使用process.cwd()
。