jlab-enhanced-launcher
jlab-enhanced-launcher copied to clipboard
Uncaught TypeError results in empty launcher
Description
I am having some trouble getting the enhanced launcher to work. After installation via pip my launcher is just empty and I get error messages on browser console.
I got a lot of kernels, maybe that is the problem?
I'd really like to use this promising enhancement, but I am having trouble getting my grip around this problem.
Reproduce
Permanently when opening/viewing a launcher tab.
Expected behavior
The enhanced launcher should be visible.
Context
- Python package version: jlab-enhanced-launcher-3.2.0
- Extension version:
jupyterlab-ihaskell v0.0.14 enabled OK
jupyterlab_pygments v0.2.2 enabled OK (python, jupyterlab_pygments)
nbdime-jupyterlab v2.1.1 enabled OK
jupyterlab-rise v0.2.0 enabled OK (python, jupyterlab_rise)
jupyterlab-night v0.4.6 enabled OK (python, jupyterlab_night)
jupyterlab_apod v3.5.0 enabled OK (python, jupyterlab_apod)
gpt_jupyterlab v0.1.4 enabled OK (python, gpt_jupyterlab)
jupyterlab-jupytext v1.3.8+dev enabled OK (python, jupytext)
@jlab-enhanced/favorites v3.1.1 enabled OK (python, jupyterlab-favorites)
@jlab-enhanced/launcher v3.2.0 enabled OK (python, jlab-enhanced-launcher)
@jupyter-widgets/jupyterlab-manager v5.0.7 enabled OK (python, jupyterlab_widgets)
@deathbeds/ipydrawio-mathjax v1.2.2 enabled OK (python, ipydrawio-mathjax)
@deathbeds/ipydrawio v1.2.2 enabled OK (python, ipydrawio)
@deathbeds/ipydrawio-jupyter-templates v1.2.2 enabled OK (python, ipydrawio)
@deathbeds/ipydrawio-webpack v20.5.300 enabled OK (python, ipydrawio)
@deathbeds/ipydrawio-notebook v1.2.2 enabled OK (python, ipydrawio)
@telamonian/theme-darcula v4.0.0 enabled OK (python, theme-darcula)
@mohirio/jupyterlab-horizon-theme v3.1.1-b0 enabled OK (python, jupyterlab-horizon-theme)
@hadim/jupyter-archive v3.3.4 enabled OK (python, jupyter-archive)
@jupyterlab/latex v3.1.0 enabled OK (python, jupyterlab-latex)
@jupyterlab/git v0.41.0 enabled OK (python, jupyterlab-git)
- Operating System and its version: Archlinux
- Browser and its version: current chromium, edge and vivaldi versions
Command Line Output
Nothing.
Web Browser Output
41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'forEach') at L.render (41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1:3493) at vdom.js:53:32 at new Promise () at L.renderDOM (vdom.js:52:16) at L.onUpdateRequest (vdom.js:30:35) at e.processMessage (index.es6.js:1421:22) at b (index.es6.js:444:21) at Object.t [as sendMessage] (index.es6.js:180:13) at L.onAfterAttach (vdom.js:37:9) at e.processMessage (index.es6.js:1455:22) render @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 (anonymous) @ vdom.js:53 renderDOM @ vdom.js:52 onUpdateRequest @ vdom.js:30 e.processMessage @ index.es6.js:1421 b @ index.es6.js:444 t @ index.es6.js:180 onAfterAttach @ vdom.js:37 e.processMessage @ index.es6.js:1455 b @ index.es6.js:444 t @ index.es6.js:180 (anonymous) @ index.es6.js:2200 c @ index.es6.js:1563 e.onAfterAttach @ index.es6.js:2199 e.processParentMessage @ index.es6.js:2099 e.notifyLayout @ index.es6.js:1500 e.processMessage @ index.es6.js:1454 b @ index.es6.js:444 t @ index.es6.js:180 t.attachWidget @ index.es6.js:10352 t.addWidget @ index.es6.js:10243 t.addWidget @ index.es6.js:11900 _addToMainArea @ shell.js:853 add @ shell.js:514 execute @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 e.execute @ index.es6.js:406 t @ index.js:931 execute @ index.js:859 e.execute @ index.es6.js:406 (anonymous) @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._onTabAddRequested @ index.es6.js:12420 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._evtMouseUp @ index.es6.js:9222 t.handleEvent @ index.es6.js:8931 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'forEach') at L.render (41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1:3493) at vdom.js:53:32 at new Promise ( ) at L.renderDOM (vdom.js:52:16) at L.onUpdateRequest (vdom.js:30:35) at e.processMessage (index.es6.js:1421:22) at b (index.es6.js:444:21) at t (index.es6.js:180:13) at y (index.es6.js:495:17) render @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 (anonymous) @ vdom.js:53 renderDOM @ vdom.js:52 onUpdateRequest @ vdom.js:30 e.processMessage @ index.es6.js:1421 b @ index.es6.js:444 t @ index.es6.js:180 y @ index.es6.js:495 requestAnimationFrame (async) _ @ index.es6.js:463 n @ index.es6.js:231 e.update @ index.es6.js:1281 set model @ vdom.js:97 w @ vdom.js:75 L @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 execute @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 e.execute @ index.es6.js:406 t @ index.js:931 execute @ index.js:859 e.execute @ index.es6.js:406 (anonymous) @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._onTabAddRequested @ index.es6.js:12420 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._evtMouseUp @ index.es6.js:9222 t.handleEvent @ index.es6.js:8931 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'forEach') at L.render (41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1:3493) at vdom.js:53:32 at new Promise ( ) at L.renderDOM (vdom.js:52:16) at L.onUpdateRequest (vdom.js:30:35) at e.processMessage (index.es6.js:1421:22) at b (index.es6.js:444:21) at Object.t [as sendMessage] (index.es6.js:180:13) at je.onUpdateRequest (mainareawidget.js:199:13) at e.processMessage (index.es6.js:1421:22) render @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 (anonymous) @ vdom.js:53 renderDOM @ vdom.js:52 onUpdateRequest @ vdom.js:30 e.processMessage @ index.es6.js:1421 b @ index.es6.js:444 t @ index.es6.js:180 onUpdateRequest @ mainareawidget.js:199 e.processMessage @ index.es6.js:1421 b @ index.es6.js:444 t @ index.es6.js:180 t._fit @ index.es6.js:5084 t.onFitRequest @ index.es6.js:5018 e.processParentMessage @ index.es6.js:2081 e.notifyLayout @ index.es6.js:1500 e.processMessage @ index.es6.js:1424 b @ index.es6.js:444 t @ index.es6.js:180 y @ index.es6.js:495 requestAnimationFrame (async) _ @ index.es6.js:463 n @ index.es6.js:231 e.update @ index.es6.js:1281 set model @ vdom.js:97 w @ vdom.js:75 L @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 execute @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 e.execute @ index.es6.js:406 t @ index.js:931 execute @ index.js:859 e.execute @ index.es6.js:406 (anonymous) @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._onTabAddRequested @ index.es6.js:12420 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._evtMouseUp @ index.es6.js:9222 t.handleEvent @ index.es6.js:8931 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'forEach') at L.render (41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1:3493) at vdom.js:53:32 at new Promise ( ) at L.renderDOM (vdom.js:52:16) at L.onUpdateRequest (vdom.js:30:35) at e.processMessage (index.es6.js:1421:22) at b (index.es6.js:444:21) at Object.t [as sendMessage] (index.es6.js:180:13) at je.onUpdateRequest (mainareawidget.js:199:13) at e.processMessage (index.es6.js:1421:22) render @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 (anonymous) @ vdom.js:53 renderDOM @ vdom.js:52 onUpdateRequest @ vdom.js:30 e.processMessage @ index.es6.js:1421 b @ index.es6.js:444 t @ index.es6.js:180 onUpdateRequest @ mainareawidget.js:199 e.processMessage @ index.es6.js:1421 b @ index.es6.js:444 t @ index.es6.js:180 t._fit @ index.es6.js:5084 t.onFitRequest @ index.es6.js:5018 e.processParentMessage @ index.es6.js:2081 e.notifyLayout @ index.es6.js:1500 e.processMessage @ index.es6.js:1424 b @ index.es6.js:444 t @ index.es6.js:180 t._fit @ index.es6.js:5079 t.onFitRequest @ index.es6.js:5018 e.processParentMessage @ index.es6.js:2081 e.notifyLayout @ index.es6.js:1500 e.processMessage @ index.es6.js:1424 b @ index.es6.js:444 t @ index.es6.js:180 y @ index.es6.js:495 requestAnimationFrame (async) _ @ index.es6.js:463 n @ index.es6.js:231 e.update @ index.es6.js:1281 set model @ vdom.js:97 w @ vdom.js:75 L @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 execute @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 e.execute @ index.es6.js:406 t @ index.js:931 execute @ index.js:859 e.execute @ index.es6.js:406 (anonymous) @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._onTabAddRequested @ index.es6.js:12420 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._evtMouseUp @ index.es6.js:9222 t.handleEvent @ index.es6.js:8931 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'forEach') at L.render (41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1:3493) at vdom.js:53:32 at new Promise ( ) at L.renderDOM (vdom.js:52:16) at L.onUpdateRequest (vdom.js:30:35) at e.processMessage (index.es6.js:1421:22) at b (index.es6.js:444:21) at Object.t [as sendMessage] (index.es6.js:180:13) at je.onUpdateRequest (mainareawidget.js:199:13) at e.processMessage (index.es6.js:1421:22) render @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 (anonymous) @ vdom.js:53 renderDOM @ vdom.js:52 onUpdateRequest @ vdom.js:30 e.processMessage @ index.es6.js:1421 b @ index.es6.js:444 t @ index.es6.js:180 onUpdateRequest @ mainareawidget.js:199 e.processMessage @ index.es6.js:1421 b @ index.es6.js:444 t @ index.es6.js:180 y @ index.es6.js:495 requestAnimationFrame (async) _ @ index.es6.js:463 n @ index.es6.js:231 e.update @ index.es6.js:1281 set model @ vdom.js:97 w @ vdom.js:75 L @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 execute @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 e.execute @ index.es6.js:406 t @ index.js:931 execute @ index.js:859 e.execute @ index.es6.js:406 (anonymous) @ 41.537ed9d24b3489875a6e.js?v=537ed9d24b3489875a6e:1 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._onTabAddRequested @ index.es6.js:12420 g @ index.es6.js:510 c @ index.es6.js:465 e.emit @ index.es6.js:121 t._evtMouseUp @ index.es6.js:9222 t.handleEvent @ index.es6.js:8931
Thank you for your time!
Thanks @jans-code for reaching out. I think we are hit by German localization. Could you try quickly if using JupyterLab without the german translation solves the bug?
oh indeed @fcollonval the extension works fine with defaulting back to english.
Would you be willing to open a PR to fix the bug? I can provide pointers.
i would be willing, those have to be good pointers though :)
To fix this, we need to translate all constant categories in the code.
- The translator object is obtained in the view widget there:
https://github.com/jupyterlab-contrib/jlab-enhanced-launcher/blob/5ca9e09098e4342bdca12eb6469649fd91fd82c6/src/launcher.tsx#L243
- You need to wrap the following category names in
this._trans.__(...)
(e.g.this._trans.__('Notebook')
):-
'Other'
line 286 -
'Notebook'
line 294 and 296 -
'Console'
line 298 and 300 -
'Other'
line 386 -
'Kernels'
line 410
-
Okay, I'll take a look at it later today and if any trouble comes up I will post here.
So I've played around with this, made the suggested changes and at least I did not break the extension, but when using german I still get the same error.
The trouble comes from the 'Console' category alone (for german local at least) and when I hardcode the german 'Konsole' in there it works.
So i guess there is something wrong with that translator object and it just falls back to that NullTranslator permanently?