Diese Art von Fehler kann passieren, wenn Sie native Module in Ihrer Anwendung enthalten. Native Module erfordern die Kompilierung für den betriebssystemspezifischen Knoten, auf dem Ihre App basiert. Während Sie also zu ASAR komprimieren, müssen Sie alle systemeigenen Module ausschließen, die sich in Ihrem Projekt befinden. Dies geschieht mit der Option unpackDir in der Option 'asar' in den Optionen Ihres Gesamtpakets. Zum Beispiel in meinem Zug Build ich so etwas wie diese:
var gulp = require('gulp');
var $ = require('gulp-load-plugins')({lazy: true});
var config = require('./gulp.config')();
var packager = require('electron-packager');
var electronPackage = require('electron/package.json');
var electronVersion = electronPackage.version;
var pkg = require('./package.json');
// Build the electron app
gulp.task('build:electron', function(cb) {
var opts = {
name: pkg.name,
platform: 'win32',
arch: 'ia32', // ia32, x64 or all
dir: config.root, // source location of app
out: config.electronbuild, // destination location for app os/native binaries
ignore: config.electronignore, // don't include these directories in the electron app build
icon: config.icon,
asar: {unpackDir: config.electroncompiled}, // compress project/modules into an asar blob but don't use asar to pack the native compiled modules
overwrite: true,
prune: true,
electronVersion: electronVersion, // Tell the packager what version of electron to build with
'app-copyright': pkg.copyright, // copyright info
'app-version': pkg.version, // The version of the application we are building
win32metadata: { // Windows Only config data
CompanyName: pkg.authors,
ProductName: pkg.name,
FileDescription: pkg.description,
OriginalFilename: pkg.name + '.exe'
}
};
packager(opts, function(err, appPath) {
$.util.log(' <- packagerDone()', err, appPath);
log(' all done!');
cb();
});
});
Was für Ihren Fall wichtig ist die Linie für die asar Option. Sie möchten sicherstellen, dass Sie etwas wie asar: {unpackDir: config.electroncompiled}
tun, und ersetzen Sie einfach die config.electroncompiled
Variable mit Ihrem Datei-Glob von Verzeichnissen, die nativ kompilierte Pakete, die Ihr Projekt verwendet (z. B. libxml-xsd
, libxmljs-mt
, nslog
usw.) enthalten. Hoffnung, die Sinn macht.