この種のエラーはになります。アプリケーションにネイティブモジュールが含まれている場合に発生します。ネイティブモジュールでは、アプリケーションが構築されているOS固有のノードに対してコンパイルが必要です。したがって、ASARに圧縮している間は、プロジェクトに含まれるネイティブモジュールを除外する必要があります。これはパッケージ全体のオプションの 'asar'オプションの中のunpackDirオプションで行います。例えば、私のゴクゴクビルドで私はこのような何かを:
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();
});
});
何あなたのケースのために重要であることはASARオプションのラインです。 asar: {unpackDir: config.electroncompiled}
のようなことをして、プロジェクトが使用するネイティブにコンパイルされたパッケージ(例えば、libxml-xsd
、libxmljs-mt
、nslog
など)を含むディレクトリのファイルグロブで、config.electroncompiled
変数を置き換えるだけです。希望は意味をなさない。