electron-packagerでパッケージングしようとしたらエラーが出て1時間悩んだ話

今回吐かれたエラーの内容

以下のエラーを吐かれました。

ざっくり言うと「package.jsonのdependenciesにelectronが無いぞ」ってものです。

(node:30436) UnhandledPromiseRejectionWarning: Error: Unable to find all properties in parent package.json files. Missing props: ["dependencies.electron","devDependencies.electron","dependencies.electron-nightly","devDependencies.electron-nightly","dependencies.electron-prebuilt-compile","devDependencies.electron-prebuilt-compile","dependencies.electron-prebuilt","devDependencies.electron-prebuilt"]
    at C:\~\build\node_modules\get-package-info\lib\index.js:23:17
    at tryCatcher (C:\~\build\node_modules\bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\~\build\node_modules\bluebird\js\release\promise.js:517:31)
    at Promise._settlePromise (C:\~\build\node_modules\bluebird\js\release\promise.js:574:18)
    at Promise._settlePromise0 (C:\~\build\node_modules\bluebird\js\release\promise.js:619:10)
    at Promise._settlePromises (C:\~\build\node_modules\bluebird\js\release\promise.js:699:18)
    at _drainQueueStep (C:\~\build\node_modules\bluebird\js\release\async.js:138:12)
    at _drainQueue (C:\~\build\node_modules\bluebird\js\release\async.js:131:9)
    at Async._drainQueues (C:\~\build\node_modules\bluebird\js\release\async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\~\build\node_modules\bluebird\js\release\async.js:17:14)
    at runCallback (timers.js:705:18)
    at tryOnImmediate (timers.js:676:5)
    at processImmediate (timers.js:658:5)
(node:30436) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:30436) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with
a non-zero exit code.

対処法

package.jsonが存在するディレクトリで”npm i electron”するだけ。

なんでエラー吐かれたの?

Electronをグローバルインストールして開発を行っていたため、package.jsonに使用しているモジュール(ここではelectron)が記載されていなかったため。

エラーはしっかり読もう

おまけ

ビルドに使用しているソースを乗っけておきます。誰得

var packager = require('electron-packager')
var src = '../app'
var config = require(src + '/package.json')
const builder = require('electron-builder');

var version = config.version

// electron-builderを使用する場合はこちら
builder.build({
    platform: 'win',
    config: {
        'directories': {
            'app': '../app',
            'output': '../packaged/' + version
        },
        'appId': '',
        'productName': '',
        'buildVersion': version,
        'win':{
            'icon': '../app/src/icon.ico',
            'target': {
                'target': 'portable',
                'arch': ['x64']
            }
        }
    }
});

// electron-packagerを使用する場合はこちら
packager({  
  dir: src,
  out: '../packaged/' + version,
  name: '',
  platform: 'win32',
  arch: 'x64',
  icon: '../app/src/icon.ico',

  'app-bundle-id': '',
  'app-version': version,

  overwrite: true,
  asar: true,
  prune: true
})

 

 

コメント

タイトルとURLをコピーしました