Electron-packager: ENOENT on any spawn after packaging

Created on 22 Feb 2017  路  4Comments  路  Source: electron/electron-packager

  • [x] I have read the contribution documentation for this project.
  • [x] I agree to follow the code of conduct that this project follows, as appropriate.
  • [x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

Please describe your issue:

In my electron app, I run spawn('dotnet', ["--version"], {cwd: someDirectory}). There's no problem when I'm just running npm start. However, once I package it up using electron-packager, it throws

 Error: spawn dotnet ENOENT
at exports._errnoException (util.js:1026:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:359:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)

I double-checked and I have dotnet in my PATH. Everything works as long as I don't package it up.

I found this discussion on atom that sounds very similar: every spawn task throws enoent when electron app packaged for distribution

Why is this happening?

Console output when you run electron-packager with the environment variable DEBUG=electron-packager. Please include the stack trace if one exists.

electron-packager Electron Packager 8.5.1 +0ms
  electron-packager Node v4.5.0 +2ms
  electron-packager Host Operating system: darwin (x64) +1ms
  electron-packager Packager Options: {"_":["."],"all":false,"deref-symlinks":true,"download":{"strictSSL":true},"overwrite":false,"prune":true,"quiet":false,"platform":"darwin","arch":"x64","dir":".","protocols":[]} +0ms
  electron-packager Target Platforms: darwin +0ms
  electron-packager Target Architectures: x64 +0ms
  electron-packager Inferring application name from productName in /Users/akuang/Ana/package.json +10ms
  electron-packager Inferring app-version from version in /Users/akuang/Ana/package.json +0ms
  electron-packager Inferring target Electron version from electron in /Users/akuang/Ana/package.json +3ms
  electron-packager Application name: Ana +0ms
  electron-packager Target Electron version: 1.4.15 +0ms
  electron-packager Ignored path regular expressions: [ '/node_modules/electron($|/)',
  '/node_modules/electron-prebuilt($|/)',
  '/node_modules/electron-packager($|/)',
  '/\\.git($|/)',
  '/node_modules/\\.bin($|/)',
  '\\.o(bj)?$' ] +0ms
  electron-packager Downloading Electron with options {"strictSSL":true,"platform":"darwin","arch":"x64","version":"1.4.15"} +3ms
Packaging app for platform darwin x64 using electron v1.4.15
  electron-packager Creating /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64-template +179ms
  electron-packager Extracting /Users/akuang/.electron/electron-v1.4.15-darwin-x64.zip to /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64-template +0ms
  electron-packager Initializing app in /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64/Ana-darwin-x64 from /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64-template template +978ms
  electron-packager Ignored paths based on the out param: [ '/Users/akuang/Ana/Ana-darwin-ia32',
  '/Users/akuang/Ana/Ana-darwin-x64',
  '/Users/akuang/Ana/Ana-darwin-armv7l',
  '/Users/akuang/Ana/Ana-linux-ia32',
  '/Users/akuang/Ana/Ana-linux-x64',
  '/Users/akuang/Ana/Ana-linux-armv7l',
  '/Users/akuang/Ana/Ana-mas-ia32',
  '/Users/akuang/Ana/Ana-mas-x64',
  '/Users/akuang/Ana/Ana-mas-armv7l',
  '/Users/akuang/Ana/Ana-win32-ia32',
  '/Users/akuang/Ana/Ana-win32-x64',
  '/Users/akuang/Ana/Ana-win32-armv7l' ] +2ms
  electron-packager Running npm prune --production +4s
  electron-packager Renaming Electron to Ana in /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64/Ana-darwin-x64/Electron.app/Contents/MacOS +465ms
  electron-packager Renaming Electron Helper to Ana Helper in /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64/Ana-darwin-x64/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS +1ms
  electron-packager Renaming Electron Helper.app to Ana Helper.app in /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64/Ana-darwin-x64/Electron.app/Contents/Frameworks +8ms
  electron-packager Renaming Electron Helper EH to Ana Helper EH in /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64/Ana-darwin-x64/Electron.app/Contents/Frameworks/Electron Helper EH.app/Contents/MacOS +0ms
  electron-packager Renaming Electron Helper EH.app to Ana Helper EH.app in /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64/Ana-darwin-x64/Electron.app/Contents/Frameworks +0ms
  electron-packager Renaming Electron Helper NP to Ana Helper NP in /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64/Ana-darwin-x64/Electron.app/Contents/Frameworks/Electron Helper NP.app/Contents/MacOS +1ms
  electron-packager Renaming Electron Helper NP.app to Ana Helper NP.app in /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64/Ana-darwin-x64/Electron.app/Contents/Frameworks +0ms
  electron-packager Moving /var/folders/4d/wckyq6l15qx1w9_lp6xkpxb4jqjkbt/T/electron-packager/darwin-x64/Ana-darwin-x64 to /Users/akuang/Ana/Ana-darwin-x64 +1ms
Wrote new app to /Users/akuang/Ana/Ana-darwin-x64

What command line arguments are you passing? Alternatively, if you are using the API, what
parameters are you passing to the packager() function?

. --platform=darwin --arch=x64

Please provide either a failing minimal testcase (with a link to the code) or detailed steps to
reproduce your problem. Using electron-quick-start
is a good starting point.

Just build anything and try to spawn some command.

const spawn = require('child_process').spawn
...
spawn('dotnet', ["--version"]) 

and so on...

question

Most helpful comment

GUI apps not launched from the Command Line do not inherit the system path. You either need an absolute path to the executable you want to spawn.

Or use a tool like https://www.npmjs.com/package/fix-path to get your system path.

All 4 comments

GUI apps not launched from the Command Line do not inherit the system path. You either need an absolute path to the executable you want to spawn.

Or use a tool like https://www.npmjs.com/package/fix-path to get your system path.

It seems like it's working on the Mac!

Do you know if this issue exists on a Windows machine?

@akcorp2003 I do not believe so, always good to test though 馃憤

Glad your issue is solved 馃槃

As a follow up, there's no problem with spawning on a Windows system.

Was this page helpful?
0 / 5 - 0 ratings