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()
。
我正在用 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()
。