electron / forge

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

Webpack template fails to load monaco-editor, but only in `electron-forge make` #1675

Closed sartak closed 4 years ago

sartak commented 4 years ago

Preflight Checklist

Issue Details

Expected Behavior

Adding monaco-editor to my app created with electron-forge works fully in both development and deployment modes: code is syntax highlighted, and there are no errors in the dev console.

Actual Behavior

Adding monaco-editor to my app created with electron-forge works fully only in development mode. The app created by electron-forge make loads and runs, but it throws 404 errors when loading some JavaScript files, which break monaco-editor's web workers, causing the editor's syntax highlighting to fail. However the rest of the app functions for the most part: the code I added to renderer.js does run, and even monaco-editor does load and does work - just not fully, due to the missing JS files.

 

The source of the trouble seems to be a mismatch between where monaco-editor's web-worker JS files exist on disk and what URL is used to attempt to load them. For example one desired file is at /Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/2/index.js but the browser tries to request file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/2/index.js, which fails. (note the absence then presence of …/main_window/… subdirectory, respectively)

Note: I'm creating an issue here in electron-forge (rather than in monaco-editor or monaco-editor-webpack-plugin) because of the different results observed in npm start vs npm run make. The underlying error may well be in one of the other two repos (e.g. it's possible that monaco-editor-webpack-plugin is at fault for ignoring options that @electron-forge/plugin-webpack sets to support different entry points for different windows). That said, it felt appropriate to start here because it's ultimately differences in electron-forge's development vs deploy that is cascading into these user-visible differences, which seems to be counter to electron-forge's intent.

To Reproduce

Annotated app dev console output

index.js:1 Failed to load resource: net::ERR_FILE_NOT_FOUND

This first error is from trying to load file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/2/index.js

Here's the relevant directory structure:

.../.webpack/renderer/main_window/index.js     <- exists
.../.webpack/renderer/main_window/index.html   <- exists
.../.webpack/renderer/main_window/2/           <- does NOT exist
.../.webpack/renderer/main_window/2/index.js   <- does NOT exist
.../.webpack/renderer/2/                       <- DOES exist
.../.webpack/renderer/2/index.js               <- DOES exist

main_window/index.html is the "Welcome to your Electron application" template from the electron-forge scaffolding. main_window/index.js is a 14-megabyte file that contains a minified version of the renderer JS (including my modifications to create and attach a div into the DOM, then load monaco), as well as, at the very least, a lot of monaco's own source code. It (correctly) does not appear to include the main.js (which is correctly available in .../.webpack/main/index.js)

The file that the system is trying to load is .../.webpack/renderer/2/index.js (without the /main_window/ subdirectory), which is the code-split module for the JavaScript syntax highlighting web worker. If I sinfully copy the file into the place that it's expected to be:

cd out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/
mkdir renderer/main_window/2
cp renderer/2/index.js renderer/main_window/2/

Then open out/my-proj-darwin-x64/my-proj.app/, this error goes away and syntax highlighting does work.


index.js:1 Failed to load resource: net::ERR_FILE_NOT_FOUND

This second error is from trying to load file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/64/index.js

It's equivalent to the previous error, except with s/2/64/. It's another code-split module for a language-specific web worker.

(Copying this chunk into the expected place helps monaco get further along, but then it fails in the same way looking for additional files, so I stopped here)


And then finally a few cascading errors resulting from the above two:

simpleWorker.js:31 Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/Microsoft/monaco-editor#faq
bootstrap:105 Uncaught (in promise) ChunkLoadError: Loading chunk 2 failed.
(error: file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/2/index.js)
    at Function.o.e (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:709)
    at Object.loader (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:1738938)
    at e.load (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:149970)
    at file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:150327
    at file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2494524
    at e.fire (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:63391)
    at e._getOrCreateMode (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2407375)
    at e._createModeAndGetLanguageIdentifier (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2407055)
    at t._selector (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2406669)
    at new t (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2405365)
bootstrap:105 Uncaught (in promise) ChunkLoadError: Loading chunk 64 failed.
(error: file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/64/index.js)
    at Function.o.e (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:709)
    at f (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2045903)
    at file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2046325
    at file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2494524
    at e.fire (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:63391)
    at e._getOrCreateMode (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2407375)
    at e._createModeAndGetLanguageIdentifier (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2407055)
    at t._selector (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2406669)
    at new t (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2405365)
    at e.create (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2406591)

electron-forge make debug log

$ DEBUG="electron-forge:*" ./node_modules/.bin/electron-forge make
WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:async-ora Process Started: Checking your system +0ms
  electron-forge:check-system checking system, create ~/.skip-forge-system-check to stop doing this +0ms
  electron-forge:async-ora Process Succeeded: Checking your system -- after 238ms +238ms
WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:async-ora Process Started: Resolving Forge Config +0ms
  electron-forge:project-resolver searching for project in: /Users/shawn/tmp/my-proj +0ms
  electron-forge:project-resolver electron-forge compatible package.json found in /Users/shawn/tmp/my-proj/package.json +1ms
  electron-forge:require-search searching [
  '@electron-forge/plugin-webpack',
  '/Users/shawn/tmp/my-proj/@electron-forge/plugin-webpack',
  '/Users/shawn/tmp/my-proj/node_modules/@electron-forge/plugin-webpack'
] relative to /Users/shawn/tmp/my-proj +0ms
  electron-forge:require-search testing @electron-forge/plugin-webpack +1ms
  electron-forge:plugin:webpack hooking process events +0ms
  electron-forge:async-ora Process Succeeded: Resolving Forge Config -- after 425ms +427ms
  electron-forge:require-search searching [
  '@electron-forge/maker-squirrel',
  '/Users/shawn/tmp/my-proj/@electron-forge/maker-squirrel',
  '/Users/shawn/tmp/my-proj/node_modules/@electron-forge/maker-squirrel'
] relative to /Users/shawn/tmp/my-proj +422ms
  electron-forge:require-search testing @electron-forge/maker-squirrel +0ms
  electron-forge:require-search searching [
  '@electron-forge/maker-zip',
  '/Users/shawn/tmp/my-proj/@electron-forge/maker-zip',
  '/Users/shawn/tmp/my-proj/node_modules/@electron-forge/maker-zip'
] relative to /Users/shawn/tmp/my-proj +45ms
  electron-forge:require-search testing @electron-forge/maker-zip +0ms
  electron-forge:require-search searching [
  '@electron-forge/maker-deb',
  '/Users/shawn/tmp/my-proj/@electron-forge/maker-deb',
  '/Users/shawn/tmp/my-proj/node_modules/@electron-forge/maker-deb'
] relative to /Users/shawn/tmp/my-proj +1ms
  electron-forge:require-search testing @electron-forge/maker-deb +0ms
  electron-forge:require-search searching [
  '@electron-forge/maker-rpm',
  '/Users/shawn/tmp/my-proj/@electron-forge/maker-rpm',
  '/Users/shawn/tmp/my-proj/node_modules/@electron-forge/maker-rpm'
] relative to /Users/shawn/tmp/my-proj +1ms
  electron-forge:require-search testing @electron-forge/maker-rpm +0ms
We need to package your application before we can make it
  electron-forge:async-ora Process Started: Preparing to Package Application for arch: x64 +50ms
  electron-forge:project-resolver searching for project in: /Users/shawn/tmp/my-proj +475ms
  electron-forge:project-resolver electron-forge compatible package.json found in /Users/shawn/tmp/my-proj/package.json +1ms
  electron-forge:require-search searching [
  '@electron-forge/plugin-webpack',
  '/Users/shawn/tmp/my-proj/@electron-forge/plugin-webpack',
  '/Users/shawn/tmp/my-proj/node_modules/@electron-forge/plugin-webpack'
] relative to /Users/shawn/tmp/my-proj +5ms
  electron-forge:require-search testing @electron-forge/plugin-webpack +1ms
  electron-forge:plugin:webpack hooking process events +57ms
  electron-forge:async-ora Process Started: Compiling Main Process Code +26ms
  electron-forge:plugin:webpack:webpackconfig Config mode: production +0ms
  electron-forge:async-ora Process Succeeded: Compiling Main Process Code -- after 633ms +633ms
  electron-forge:async-ora Process Started: Compiling Renderer Template +0ms
  electron-forge:async-ora Process Succeeded: Compiling Renderer Template -- after 25s +25s
  electron-forge:packager packaging with options {
  asar: false,
  overwrite: true,
  ignore: [Function (anonymous)],
  dir: '/Users/shawn/tmp/my-proj',
  arch: 'x64',
  platform: 'darwin',
  afterCopy: [ [AsyncFunction (anonymous)] ],
  afterExtract: [ [AsyncFunction (anonymous)] ],
  afterPrune: [ [AsyncFunction (anonymous)] ],
  out: '/Users/shawn/tmp/my-proj/out',
  electronVersion: '8.2.5',
  quiet: true
} +0ms
  electron-forge:async-ora Process Succeeded: Preparing to Package Application for arch: x64 -- after 27.5s +2s
  electron-forge:async-ora Process Started: Preparing native dependencies +8ms
  electron-forge:async-ora Process Succeeded: Preparing native dependencies -- after 6ms +6ms
  electron-forge:async-ora Process Started: Packaging Application +0ms
  electron-forge:async-ora Process Succeeded: Packaging Application -- after 20ms +20ms
Making for the following targets: zip
  electron-forge:async-ora Process Started: Making for target: zip - On platf  error reproduction
orm: darwin - For arch: x64 +2ms
  electron-forge:async-ora Process Succeeded: Making for target: zip - On platform: darwin - For arch: x64 -- after 8.8s +9s
  electron-forge:plugin:webpack handling process exit with: { cleanup: true } +36s
  electron-forge:plugin:webpack handling process exit with: { cleanup: true } +1ms

Generated app directory layout

$ find . | sort
.
./Contents
./Contents/Frameworks
./Contents/Frameworks/Electron Framework.framework
./Contents/Frameworks/Electron Framework.framework/Electron Framework
./Contents/Frameworks/Electron Framework.framework/Libraries
./Contents/Frameworks/Electron Framework.framework/Resources
./Contents/Frameworks/Electron Framework.framework/Versions
./Contents/Frameworks/Electron Framework.framework/Versions/A
./Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libEGL.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libEGL.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libGLESv2.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Info.plist
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/MainMenu.nib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/am.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/am.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ar.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ar.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bg.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bg.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bn.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bn.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ca.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ca.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/chrome_100_percent.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/chrome_200_percent.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/crashpad_handler
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/cs.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/cs.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/da.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/da.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/de.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/de.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/el.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/el.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en_GB.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en_GB.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es_419.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es_419.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/et.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/et.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fa.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fa.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fi.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fi.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fil.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fil.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/gu.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/gu.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/he.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/he.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hi.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hi.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hu.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hu.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/icudtl.dat
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/id.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/id.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/it.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/it.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ja.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ja.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/kn.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/kn.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ko.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ko.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lt.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lt.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lv.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lv.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ml.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ml.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pl.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pl.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_BR.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_BR.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_PT.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_PT.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/resources.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ro.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ro.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ru.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ru.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sk.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sk.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sl.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sl.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sv.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sv.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sw.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sw.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ta.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ta.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/te.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/te.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/th.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/th.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/tr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/tr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/uk.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/uk.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/v8_context_snapshot.bin
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/vi.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/vi.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_CN.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_CN.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_TW.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_TW.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/Current
./Contents/Frameworks/Mantle.framework
./Contents/Frameworks/Mantle.framework/Headers
./Contents/Frameworks/Mantle.framework/Mantle
./Contents/Frameworks/Mantle.framework/Modules
./Contents/Frameworks/Mantle.framework/Resources
./Contents/Frameworks/Mantle.framework/Versions
./Contents/Frameworks/Mantle.framework/Versions/A
./Contents/Frameworks/Mantle.framework/Versions/A/Headers
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLJSONAdapter.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLManagedObjectAdapter.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel+NSCoding.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLValueTransformer.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/Mantle.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSArray+MTLManipulationAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSDictionary+MTLManipulationAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSObject+MTLComparisonAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLInversionAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLPredefinedTransformerAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Mantle
./Contents/Frameworks/Mantle.framework/Versions/A/Modules
./Contents/Frameworks/Mantle.framework/Versions/A/Modules/module.modulemap
./Contents/Frameworks/Mantle.framework/Versions/A/Resources
./Contents/Frameworks/Mantle.framework/Versions/A/Resources/Info.plist
./Contents/Frameworks/Mantle.framework/Versions/Current
./Contents/Frameworks/ReactiveCocoa.framework
./Contents/Frameworks/ReactiveCocoa.framework/Headers
./Contents/Frameworks/ReactiveCocoa.framework/Modules
./Contents/Frameworks/ReactiveCocoa.framework/ReactiveCocoa
./Contents/Frameworks/ReactiveCocoa.framework/Resources
./Contents/Frameworks/ReactiveCocoa.framework/Versions
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTKeyPathCoding.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTScope.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSArray+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACCommandSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACTextSignalSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSData+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSDictionary+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSEnumerator+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSFileHandle+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSIndexSet+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSNotificationCenter+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACAppKitBindings.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACDeallocating.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACLifting.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACPropertySubscribing.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACSelectorSignal.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSOrderedSet+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSSet+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSText+RACSignalSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSURLConnection+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSUserDefaults+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBacktrace.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBehaviorSubject.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACChannel.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCommand.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCompoundDisposable.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACDisposable.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACEvent.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACGroupedSignal.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACKVOChannel.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACMulticastConnection.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler+Subclass.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACReplaySubject.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler+Subclass.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScopedDisposable.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSequence.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSerialDisposable.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal+Operations.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACStream.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubject.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriber.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriptingAssignmentTrampoline.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTargetQueueScheduler.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTestScheduler.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTuple.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACUnit.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/ReactiveCocoa.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/metamacros.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules/module.modulemap
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/ReactiveCocoa
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources/Info.plist
./Contents/Frameworks/ReactiveCocoa.framework/Versions/Current
./Contents/Frameworks/Squirrel.framework
./Contents/Frameworks/Squirrel.framework/Headers
./Contents/Frameworks/Squirrel.framework/Modules
./Contents/Frameworks/Squirrel.framework/Resources
./Contents/Frameworks/Squirrel.framework/Squirrel
./Contents/Frameworks/Squirrel.framework/Versions
./Contents/Frameworks/Squirrel.framework/Versions/A
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSBundle+SQRLVersionExtensions.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSProcessInfo+SQRLVersionExtensions.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLDownloadedUpdate.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdate.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdater.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/Squirrel.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Modules
./Contents/Frameworks/Squirrel.framework/Versions/A/Modules/module.modulemap
./Contents/Frameworks/Squirrel.framework/Versions/A/Resources
./Contents/Frameworks/Squirrel.framework/Versions/A/Resources/Info.plist
./Contents/Frameworks/Squirrel.framework/Versions/A/Resources/ShipIt
./Contents/Frameworks/Squirrel.framework/Versions/A/Squirrel
./Contents/Frameworks/Squirrel.framework/Versions/Current
./Contents/Frameworks/my-proj Helper (GPU).app
./Contents/Frameworks/my-proj Helper (GPU).app/Contents
./Contents/Frameworks/my-proj Helper (GPU).app/Contents/Info.plist
./Contents/Frameworks/my-proj Helper (GPU).app/Contents/MacOS
./Contents/Frameworks/my-proj Helper (GPU).app/Contents/MacOS/my-proj Helper (GPU)
./Contents/Frameworks/my-proj Helper (GPU).app/Contents/PkgInfo
./Contents/Frameworks/my-proj Helper (Plugin).app
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents/Info.plist
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents/MacOS
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents/MacOS/my-proj Helper (Plugin)
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents/PkgInfo
./Contents/Frameworks/my-proj Helper (Renderer).app
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents/Info.plist
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents/MacOS
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents/MacOS/my-proj Helper (Renderer)
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents/PkgInfo
./Contents/Frameworks/my-proj Helper.app
./Contents/Frameworks/my-proj Helper.app/Contents
./Contents/Frameworks/my-proj Helper.app/Contents/Info.plist
./Contents/Frameworks/my-proj Helper.app/Contents/MacOS
./Contents/Frameworks/my-proj Helper.app/Contents/MacOS/my-proj Helper
./Contents/Frameworks/my-proj Helper.app/Contents/PkgInfo
./Contents/Info.plist
./Contents/MacOS
./Contents/MacOS/my-proj
./Contents/PkgInfo
./Contents/Resources
./Contents/Resources/am.lproj
./Contents/Resources/app
./Contents/Resources/app/.webpack
./Contents/Resources/app/.webpack/main
./Contents/Resources/app/.webpack/main/index.js
./Contents/Resources/app/.webpack/main/index.js.map
./Contents/Resources/app/.webpack/renderer
./Contents/Resources/app/.webpack/renderer/0
./Contents/Resources/app/.webpack/renderer/0/index.js
./Contents/Resources/app/.webpack/renderer/10
./Contents/Resources/app/.webpack/renderer/10/index.js
./Contents/Resources/app/.webpack/renderer/11
./Contents/Resources/app/.webpack/renderer/11/index.js
./Contents/Resources/app/.webpack/renderer/12
./Contents/Resources/app/.webpack/renderer/12/index.js
./Contents/Resources/app/.webpack/renderer/13
./Contents/Resources/app/.webpack/renderer/13/index.js
./Contents/Resources/app/.webpack/renderer/14
./Contents/Resources/app/.webpack/renderer/14/index.js
./Contents/Resources/app/.webpack/renderer/15
./Contents/Resources/app/.webpack/renderer/15/index.js
./Contents/Resources/app/.webpack/renderer/16
./Contents/Resources/app/.webpack/renderer/16/index.js
./Contents/Resources/app/.webpack/renderer/17
./Contents/Resources/app/.webpack/renderer/17/index.js
./Contents/Resources/app/.webpack/renderer/18
./Contents/Resources/app/.webpack/renderer/18/index.js
./Contents/Resources/app/.webpack/renderer/19
./Contents/Resources/app/.webpack/renderer/19/index.js
./Contents/Resources/app/.webpack/renderer/2
./Contents/Resources/app/.webpack/renderer/2/index.js
./Contents/Resources/app/.webpack/renderer/20
./Contents/Resources/app/.webpack/renderer/20/index.js
./Contents/Resources/app/.webpack/renderer/21
./Contents/Resources/app/.webpack/renderer/21/index.js
./Contents/Resources/app/.webpack/renderer/22
./Contents/Resources/app/.webpack/renderer/22/index.js
./Contents/Resources/app/.webpack/renderer/23
./Contents/Resources/app/.webpack/renderer/23/index.js
./Contents/Resources/app/.webpack/renderer/24
./Contents/Resources/app/.webpack/renderer/24/index.js
./Contents/Resources/app/.webpack/renderer/25
./Contents/Resources/app/.webpack/renderer/25/index.js
./Contents/Resources/app/.webpack/renderer/26
./Contents/Resources/app/.webpack/renderer/26/index.js
./Contents/Resources/app/.webpack/renderer/27
./Contents/Resources/app/.webpack/renderer/27/index.js
./Contents/Resources/app/.webpack/renderer/28
./Contents/Resources/app/.webpack/renderer/28/index.js
./Contents/Resources/app/.webpack/renderer/29
./Contents/Resources/app/.webpack/renderer/29/index.js
./Contents/Resources/app/.webpack/renderer/3
./Contents/Resources/app/.webpack/renderer/3/index.js
./Contents/Resources/app/.webpack/renderer/30
./Contents/Resources/app/.webpack/renderer/30/index.js
./Contents/Resources/app/.webpack/renderer/31
./Contents/Resources/app/.webpack/renderer/31/index.js
./Contents/Resources/app/.webpack/renderer/32
./Contents/Resources/app/.webpack/renderer/32/index.js
./Contents/Resources/app/.webpack/renderer/33
./Contents/Resources/app/.webpack/renderer/33/index.js
./Contents/Resources/app/.webpack/renderer/34
./Contents/Resources/app/.webpack/renderer/34/index.js
./Contents/Resources/app/.webpack/renderer/35
./Contents/Resources/app/.webpack/renderer/35/index.js
./Contents/Resources/app/.webpack/renderer/36
./Contents/Resources/app/.webpack/renderer/36/index.js
./Contents/Resources/app/.webpack/renderer/37
./Contents/Resources/app/.webpack/renderer/37/index.js
./Contents/Resources/app/.webpack/renderer/38
./Contents/Resources/app/.webpack/renderer/38/index.js
./Contents/Resources/app/.webpack/renderer/39
./Contents/Resources/app/.webpack/renderer/39/index.js
./Contents/Resources/app/.webpack/renderer/4
./Contents/Resources/app/.webpack/renderer/4/index.js
./Contents/Resources/app/.webpack/renderer/40
./Contents/Resources/app/.webpack/renderer/40/index.js
./Contents/Resources/app/.webpack/renderer/41
./Contents/Resources/app/.webpack/renderer/41/index.js
./Contents/Resources/app/.webpack/renderer/42
./Contents/Resources/app/.webpack/renderer/42/index.js
./Contents/Resources/app/.webpack/renderer/43
./Contents/Resources/app/.webpack/renderer/43/index.js
./Contents/Resources/app/.webpack/renderer/44
./Contents/Resources/app/.webpack/renderer/44/index.js
./Contents/Resources/app/.webpack/renderer/45
./Contents/Resources/app/.webpack/renderer/45/index.js
./Contents/Resources/app/.webpack/renderer/46
./Contents/Resources/app/.webpack/renderer/46/index.js
./Contents/Resources/app/.webpack/renderer/47
./Contents/Resources/app/.webpack/renderer/47/index.js
./Contents/Resources/app/.webpack/renderer/48
./Contents/Resources/app/.webpack/renderer/48/index.js
./Contents/Resources/app/.webpack/renderer/49
./Contents/Resources/app/.webpack/renderer/49/index.js
./Contents/Resources/app/.webpack/renderer/5
./Contents/Resources/app/.webpack/renderer/5/index.js
./Contents/Resources/app/.webpack/renderer/50
./Contents/Resources/app/.webpack/renderer/50/index.js
./Contents/Resources/app/.webpack/renderer/51
./Contents/Resources/app/.webpack/renderer/51/index.js
./Contents/Resources/app/.webpack/renderer/52
./Contents/Resources/app/.webpack/renderer/52/index.js
./Contents/Resources/app/.webpack/renderer/53
./Contents/Resources/app/.webpack/renderer/53/index.js
./Contents/Resources/app/.webpack/renderer/54
./Contents/Resources/app/.webpack/renderer/54/index.js
./Contents/Resources/app/.webpack/renderer/55
./Contents/Resources/app/.webpack/renderer/55/index.js
./Contents/Resources/app/.webpack/renderer/56
./Contents/Resources/app/.webpack/renderer/56/index.js
./Contents/Resources/app/.webpack/renderer/57
./Contents/Resources/app/.webpack/renderer/57/index.js
./Contents/Resources/app/.webpack/renderer/58
./Contents/Resources/app/.webpack/renderer/58/index.js
./Contents/Resources/app/.webpack/renderer/59
./Contents/Resources/app/.webpack/renderer/59/index.js
./Contents/Resources/app/.webpack/renderer/6
./Contents/Resources/app/.webpack/renderer/6/index.js
./Contents/Resources/app/.webpack/renderer/60
./Contents/Resources/app/.webpack/renderer/60/index.js
./Contents/Resources/app/.webpack/renderer/61
./Contents/Resources/app/.webpack/renderer/61/index.js
./Contents/Resources/app/.webpack/renderer/62
./Contents/Resources/app/.webpack/renderer/62/index.js
./Contents/Resources/app/.webpack/renderer/63
./Contents/Resources/app/.webpack/renderer/63/index.js
./Contents/Resources/app/.webpack/renderer/64
./Contents/Resources/app/.webpack/renderer/64/index.js
./Contents/Resources/app/.webpack/renderer/7
./Contents/Resources/app/.webpack/renderer/7/index.js
./Contents/Resources/app/.webpack/renderer/8
./Contents/Resources/app/.webpack/renderer/8/index.js
./Contents/Resources/app/.webpack/renderer/9
./Contents/Resources/app/.webpack/renderer/9/index.js
./Contents/Resources/app/.webpack/renderer/9242107df7da7c6ad3cadf3133abcd37.ttf
./Contents/Resources/app/.webpack/renderer/css.worker.js
./Contents/Resources/app/.webpack/renderer/editor.worker.js
./Contents/Resources/app/.webpack/renderer/html.worker.js
./Contents/Resources/app/.webpack/renderer/json.worker.js
./Contents/Resources/app/.webpack/renderer/main_window
./Contents/Resources/app/.webpack/renderer/main_window/index.html
./Contents/Resources/app/.webpack/renderer/main_window/index.js
./Contents/Resources/app/.webpack/renderer/ts.worker.js
./Contents/Resources/app/node_modules
./Contents/Resources/app/package.json
./Contents/Resources/ar.lproj
./Contents/Resources/bg.lproj
./Contents/Resources/bn.lproj
./Contents/Resources/ca.lproj
./Contents/Resources/cs.lproj
./Contents/Resources/da.lproj
./Contents/Resources/de.lproj
./Contents/Resources/el.lproj
./Contents/Resources/electron.icns
./Contents/Resources/en.lproj
./Contents/Resources/en_GB.lproj
./Contents/Resources/es.lproj
./Contents/Resources/es_419.lproj
./Contents/Resources/et.lproj
./Contents/Resources/fa.lproj
./Contents/Resources/fi.lproj
./Contents/Resources/fil.lproj
./Contents/Resources/fr.lproj
./Contents/Resources/gu.lproj
./Contents/Resources/he.lproj
./Contents/Resources/hi.lproj
./Contents/Resources/hr.lproj
./Contents/Resources/hu.lproj
./Contents/Resources/id.lproj
./Contents/Resources/it.lproj
./Contents/Resources/ja.lproj
./Contents/Resources/kn.lproj
./Contents/Resources/ko.lproj
./Contents/Resources/lt.lproj
./Contents/Resources/lv.lproj
./Contents/Resources/ml.lproj
./Contents/Resources/mr.lproj
./Contents/Resources/ms.lproj
./Contents/Resources/nb.lproj
./Contents/Resources/nl.lproj
./Contents/Resources/pl.lproj
./Contents/Resources/pt_BR.lproj
./Contents/Resources/pt_PT.lproj
./Contents/Resources/ro.lproj
./Contents/Resources/ru.lproj
./Contents/Resources/sk.lproj
./Contents/Resources/sl.lproj
./Contents/Resources/sr.lproj
./Contents/Resources/sv.lproj
./Contents/Resources/sw.lproj
./Contents/Resources/ta.lproj
./Contents/Resources/te.lproj
./Contents/Resources/th.lproj
./Contents/Resources/tr.lproj
./Contents/Resources/uk.lproj
./Contents/Resources/vi.lproj
./Contents/Resources/zh_CN.lproj
./Contents/Resources/zh_TW.lproj
sartak commented 4 years ago

I have searched the issue tracker for a bug that matches the one I want to file, without success.

My search was too narrow. I looked more carefully and found https://github.com/electron-userland/electron-forge/issues/1591 which seems similar. Feel free to close this as a dupe if you think it's the same underlying issue.

gervais0017 commented 4 years ago

@sartak and anybody else that stumble upon this issue, after 2 days of fighting against the same exact issue (ElectronForge+Webpack+MonacoEditor+monaco-editor-webpack-plugin), it seems like one extra line was all that was needed :

in webpack.rendered.config

module.exports = {
  [...]
  output: {
    publicPath: './../',
  },
  [...]
}

For some reason, with that config, both the dev server and the prod make are still able to find main_window/index.js, but the public path being one level higher, it's also able to find all the ##/index.js and the xxx.worker.js at the "top" level, under renderer/.


As an added tidbit, I also did the following optimization, which keeps all the ##/index.js nicely bundled in one folder. (My solution above works with and without the following optimization)

in webpack.rendered.config

module.exports = {
  [...]
  optimization: {
    splitChunks: {
      cacheGroups: {
        monacoCommon: {
          test: /[\\/]node_modules[\\/]monaco\-editor/,
          name: 'monaco-editor-common',
          chunks: 'async'
        }
      }
    }
  },
  [...]
}
sartak commented 4 years ago

Amazing, the publicPath: './../' trick worked perfectly for me! Thank you so much @gervais0017!!

gervais0017 commented 4 years ago

@sartak Wonderful, glad the hear I was able to help ! Also I'm happy to know that the trick actually works and wasn't just a fluke on my local environment :)

malept commented 4 years ago

This sounds like a Webpack configuration problem rather than a bug in Electron Forge, so I'm closing this.

sartak commented 4 years ago

Please consider reopening this, because Electron Forge is what's generating inconsistent and incorrect Webpack configuration, as I explained here:

Note: I'm creating an issue here in electron-forge (rather than in monaco-editor or monaco-editor-webpack-plugin) because of the different results observed in npm start vs npm run make. The underlying error may well be in one of the other two repos (e.g. it's possible that monaco-editor-webpack-plugin is at fault for ignoring options that @electron-forge/plugin-webpack sets to support different entry points for different windows). That said, it felt appropriate to start here because it's ultimately differences in electron-forge's development vs deploy that is cascading into these user-visible differences, which seems to be counter to electron-forge's intent.

Now that we better understand the problem, I'd be happy to create a smaller repro case that doesn't involve Monaco.

malept commented 4 years ago

Once there's a minimal repro, I'll consider reopening this issue.