electron / forge

:electron: A complete tool for building and publishing Electron applications
https://electronforge.io
MIT License
6.46k stars 513 forks source link

Exception when running getMenuItemById #385

Closed galusben closed 6 years ago

galusben commented 6 years ago

Please describe your issue:

I am experiencing this exception only after running electron-forge make:

Uncaught Exception:
TypeError: p.getMenuInstance(...).getMenuItemById is not a function
    at t (/Users/galba/repos/wire/out/Reversee-darwin-x64/Reversee.app/Contents/Resources/app/src/main.js:1:816)
    at EventEmitter.s.on (/Users/galba/repos/wire/out/Reversee-darwin-x64/Reversee.app/Contents/Resources/app/src/main.js:1:2594)
    at emitTwo (events.js:106:13)
    at EventEmitter.emit (events.js:194:7)
    at WebContents.<anonymous> (/Users/galba/repos/wire/out/Reversee-darwin-x64/Reversee.app/Contents/Resources/electron.asar/browser/api/web-contents.js:247:13)
    at emitTwo (events.js:106:13)
    at WebContents.emit (events.js:194:7)

It seems like that somehow in the build process, the underlying electron version is not the latest one and the method getMenuItemById of Menu is missing.

When I run electron-forge start I do not get this error.

I have created a small git repo to demonstrate the problem:

https://github.com/galusben/electron-bug-385

After cloning run: electron-forge start The application starts

run: electron-forge make Then run the .app file from the out dir, you will see a similar exception.

I am using mac, and experiencing the issue while building for mac.

Here are my dependencien:

 "devDependencies": {
    "chai": "^3.5.0",
    "chai-as-promised": "^5.3.0",
    "electron-prebuilt-compile": "1.7.9",
    "mocha": "^3.0.2",
    "rimraf": "^2.5.4",
    "spectron": "^3.6.0",
    "uglify-es": "^3.0.26"
  },
  "dependencies": {
    "bootstrap": "^3.3.7",
    "bootstrap-select": "^1.12.2",
    "codemirror": "^5.25.2",
    "electron-compile": "^6.4.2",
    "electron-squirrel-startup": "^1.0.0",
    "font-awesome": "^4.7.0",
    "jquery": "^3.1.0",
    "lodash": "^4.17.4",
    "request-to-curl": "^0.1.1",
    "split.js": "^1.3.4"
  },

Thanks!

*Console output when you run electron-forge with the environment variable `DEBUG=electron-forge:`. (Instructions on how to do so here). Please include the stack trace if one exists.**

galba-mac:wire galba$ electron-forge make
WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:lifecycle Process Started: Checking your system +0ms
  electron-forge:lifecycle Process Succeeded: Checking your system +730ms
  electron-forge:runtime-config setting key: verbose to value: false +0ms
WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:lifecycle Process Started: Resolving Forge Config +0ms
  electron-forge:project-resolver searching for project in: /Users/galba/repos/wire +0ms
  electron-forge:project-resolver electron-forge compatible package.json found in /Users/galba/repos/wire/package.json +5ms
  electron-forge:lifecycle Process Succeeded: Resolving Forge Config +13ms
  electron-forge:require-search searching [ '../makers/darwin/zip.js',
  '../makers/generic/zip.js',
  'electron-forge-maker-zip',
  'zip',
  '/Users/galba/repos/wire/zip',
  '/Users/galba/repos/wire/node_modules/zip',
  '/usr/local/lib/node_modules/electron-forge/dist/makers/darwin/zip.js',
  '/usr/local/lib/node_modules/electron-forge/dist/makers/generic/zip.js',
  '/usr/local/lib/node_modules/electron-forge/dist/api/electron-forge-maker-zip',
  '/usr/local/lib/node_modules/electron-forge/dist/api/zip',
  '/Users/galba/repos/wire/zip',
  '/Users/galba/repos/wire/node_modules/zip',
  '/usr/local/lib/node_modules/electron-forge/dist/api/makers/darwin/zip.js',
  '/usr/local/lib/node_modules/electron-forge/dist/api/makers/generic/zip.js',
  '/usr/local/lib/node_modules/electron-forge/dist/api/node_modules/electron-forge-maker-zip',
  '/usr/local/lib/node_modules/electron-forge/dist/api/node_modules/zip',
  '/Users/galba/repos/wire/zip',
  '/Users/galba/repos/wire/node_modules/zip' ] relative to /usr/local/lib/node_modules/electron-forge/dist/api +0ms
  electron-forge:require-search testing ../makers/darwin/zip.js +1ms
  electron-forge:require-search testing ../makers/generic/zip.js +0ms
  electron-forge:require-search searching [ '../makers/darwin/dmg.js',
  '../makers/generic/dmg.js',
  'electron-forge-maker-dmg',
  'dmg',
  '/Users/galba/repos/wire/dmg',
  '/Users/galba/repos/wire/node_modules/dmg',
  '/usr/local/lib/node_modules/electron-forge/dist/makers/darwin/dmg.js',
  '/usr/local/lib/node_modules/electron-forge/dist/makers/generic/dmg.js',
  '/usr/local/lib/node_modules/electron-forge/dist/api/electron-forge-maker-dmg',
  '/usr/local/lib/node_modules/electron-forge/dist/api/dmg',
  '/Users/galba/repos/wire/dmg',
  '/Users/galba/repos/wire/node_modules/dmg',
  '/usr/local/lib/node_modules/electron-forge/dist/api/makers/darwin/dmg.js',
  '/usr/local/lib/node_modules/electron-forge/dist/api/makers/generic/dmg.js',
  '/usr/local/lib/node_modules/electron-forge/dist/api/node_modules/electron-forge-maker-dmg',
  '/usr/local/lib/node_modules/electron-forge/dist/api/node_modules/dmg',
  '/Users/galba/repos/wire/dmg',
  '/Users/galba/repos/wire/node_modules/dmg' ] relative to /usr/local/lib/node_modules/electron-forge/dist/api +2ms
  electron-forge:require-search testing ../makers/darwin/dmg.js +1ms
We need to package your application before we can make it
  electron-forge:lifecycle Process Started: Preparing to Package Application for arch: x64 +7ms
  electron-forge:project-resolver searching for project in: /Users/galba/repos/wire +13ms
  electron-forge:project-resolver electron-forge compatible package.json found in /Users/galba/repos/wire/package.json +0ms
  electron-forge:require-search searching [ './afterCopy.js',
  '/Users/galba/repos/wire/afterCopy.js',
  '/Users/galba/repos/wire/node_modules/afterCopy.js' ] relative to /Users/galba/repos/wire +6ms
  electron-forge:require-search testing ./afterCopy.js +0ms
  electron-forge:require-search testing /Users/galba/repos/wire/afterCopy.js +0ms
Loading custom after copy
  electron-forge:hook could not find hook: generateAssets +0ms
  electron-forge:hook could not find hook: prePackage +0ms
  electron-forge:packager packaging with options { asar: false,
  overwrite: true,
  dir: '/Users/galba/repos/wire',
  ignore: 'tests|.idea|.*iml|Dockerfile|bitbucket-pipelines.yml|afterCopy.js',
  platform: 'darwin',
  packageManager: 'yarn',
  icon: 'src/assets/Reversee',
  afterCopy: [ [Function], [Function], [Function], [Function] ],
  afterExtract: [],
  afterPrune: [ [Function: rebuildHookFn] ],
  arch: 'x64',
  out: '/Users/galba/repos/wire/out',
  electronVersion: '1.7.9',
  quiet: true } +0ms
  electron-forge:lifecycle Process Succeeded: Preparing to Package Application for arch: x64 +6s
  electron-forge:lifecycle Process Started: Compiling Application +2ms
Running custom after copy
/var/folders/9f/m1l6xy4x4zg7xwn203ffz6755th6cv/T/electron-packager/darwin-x64/Reversee-darwin-x64/Electron.app/Contents/Resources/app
1.7.9
darwin
x64
[ '.DS_Store',
  'assets',
  'breakPoint.html',
  'breakPointsEdit.html',
  'breakpoint.js',
  'breakpointsEdit.js',
  'index.html',
  'index.js',
  'interceptor.js',
  'main.js',
  'menu.js',
  'proxy.js',
  'resources' ]
.DS_Store
assets
breakPoint.html
breakPointsEdit.html
breakpoint.js
breakpointsEdit.js
index.html
index.js
interceptor.js
main.js
menu.js
proxy.js
resources
  electron-forge:lifecycle Process Succeeded: Compiling Application +7s
  electron-forge:lifecycle Process Started: Preparing native dependencies +4s
  electron-forge:lifecycle Process Succeeded: Preparing native dependencies +63ms
  electron-forge:lifecycle Process Started: Packaging Application +0ms
  electron-forge:hook could not find hook: postPackage +17s
  electron-forge:lifecycle Process Succeeded: Packaging Application +27ms
Making for the following targets:
  electron-forge:hook could not find hook: preMake +1ms
  electron-forge:lifecycle Process Started: Making for target: zip - On platform: darwin - For arch: x64 +2ms
  electron-forge:lifecycle Process Succeeded: Making for target: zip - On platform: darwin - For arch: x64 +13s
  electron-forge:lifecycle Process Started: Making for target: dmg - On platform: darwin - For arch: x64 +0ms
  electron-forge:lifecycle Process Succeeded: Making for target: dmg - On platform: darwin - For arch: x64 +14s
  electron-forge:hook could not find hook: postMake +27s
galba-mac:wire galba$ 

What command line arguments are you passing?

electron-forge make

What does your config.forge data in package.json look like?

    "forge": {
      "s3": {
        "accessKeyId": "***",
        "bucket": "***",
        "public": true
      },
      "make_targets": {
        "win32": [
          "zip",
          "squirrel"
        ],
        "darwin": [
          "zip",
          "dmg"
        ],
        "linux": [
          "zip",
          "deb"
        ]
      },
      "electronPackagerConfig": {
        "dir": "src",
        "ignore": "tests|.idea|.*iml|Dockerfile|afterCopy.js",
        "platform": [
          "linux",
          "win32",
          "darwin"
        ],
        "packageManager": "yarn",
        "icon": "src/assets/Reversee",
        "afterCopy": [
          "./afterCopy.js"
        ]
      },
      "electronWinstallerConfig": {
        "name": "Reversee",
        "title": "Reversee",
        "authors": "Gal Ben Ami",
        "description": "Reversee - ***"
      },
      "electronInstallerDebian": {
        "description": "Reversee - ****",
        "productDescription": "Reversee - ****"
      }
    }

Please provide either a failing minimal testcase (with a link to the code) or detailed steps to reproduce your problem. Using electron-forge init is a good starting point, if that is not the source of your problem.

malept commented 6 years ago

getMenuItemById was added to Electron in https://github.com/electron/electron/commit/15b0878a176bec6ddef1a411f177900ff742f13b, and was first released in the 1.8.x series. As of the time of this comment, the 1.8.x series is in beta. Electron Forge defaults to the latest stable release when creating a new project.

MarshallOfSound commented 6 years ago

@galusben To aleive confusion here, the reason it works with start is because there is a bug in electron-prebuilt-compile@1.7.9 that causes it to download @1.8.1 instead 👍

When making we use the correct version

malept commented 6 years ago

Strange, it doesn't work for me.

galusben commented 6 years ago

Thanks!