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...
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.
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.