If you are using the display system and a mimetype to set up your
rendering, you could possibly use the cookie cutter at
https://github.com/jupyterlab/mimerender-cookiecutter to create the
nbextension.

Jason


On Wed, Nov 22, 2017 at 11:37 PM Jason Grout <[email protected]> wrote:

> Yes, make a notebook nbextension, which is the preferred way to get
> javascript on the page:
>
>
> https://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/Distributing%20Jupyter%20Extensions%20as%20Python%20Packages.html
>
>
>
> On Wed, Nov 22, 2017 at 7:12 PM John <[email protected]> wrote:
>
>> OK I figured out what my problem was. In my kernel python code I was
>> setting up the comm channel with these two lines of code.
>>
>> display(Javascript("""require(["nbextensions/vpython_libraries/glowcomm"],
>> function(){console.log("GLOWCOMM LOADED");})"""))
>> comm = Comm(target_name='my_comm_target')
>>
>> The first line would run javascript code which in turn registered the
>> target on the javascript front end. The second line would connect to the
>> target from the python side. If I put a time delay between these two
>> commands then the problem goes away because the javascript code has time to
>> execute to register the target to which I am trying to connect the Comm
>> channel to.
>>
>> Is there an alternative approach to ensure that the javascript file I
>> require is loaded when the notebook is opened?
>>
>> John
>>
>>
>>
>> On Wednesday, November 22, 2017 at 4:10:37 PM UTC-8, Jason Grout wrote:
>>
>>> Can you turn on the browser debugger and have it pause on errors, and
>>> see what the lines of code are that are giving the problem (what are the
>>> lines of code, not just the line numbers)? I would probably debug this by
>>> also putting a breakpoint at the registration function and making sure that
>>> was working (i.e., step through the code and make sure that an entry was
>>> stored in the kernel's comm registry). I would also step through the code
>>> where the error happened and inspect the registry.
>>>
>>> For reference, here is where we are registering a target in
>>> widgetsnbextension:
>>> https://github.com/jupyter-widgets/ipywidgets/blob/bbfc39ec0f9e49f730d25bc5347d39e18992a54b/widgetsnbextension/src/manager.js#L71
>>>
>>>
>>> Thanks,
>>>
>>> Jason
>>>
>>>
>>> On Wed, Nov 22, 2017 at 2:30 PM John <[email protected]> wrote:
>>>
>> Hi
>>>>
>>>>    I tried opening a Comm from the kernel as described in
>>>>
>>>> http://jupyter-notebook.readthedocs.io/en/stable/comms.html
>>>>
>>>> And I am getting the error
>>>>
>>>> utils.js:910 Could not open comm  --  Error: Class my_comm_target not
>>>> found in registry
>>>>     at utils.js:874
>>>>     at new Promise (<anonymous>)
>>>>     at Object.load_class (utils.js:859)
>>>>     at CommManager.comm_open (comm.js:84)
>>>>     at i (jquery.min.js:4)
>>>>     at Kernel._handle_iopub_message (kernel.js:1223)
>>>>     at Kernel._finish_ws_message (kernel.js:1015)
>>>>     at kernel.js:1006
>>>>     at <anonymous>
>>>> (anonymous) @ utils.js:910
>>>> Promise rejected (async)
>>>> CommManager.comm_open @ comm.js:85
>>>> i @ jquery.min.js:4
>>>> Kernel._handle_iopub_message @ kernel.js:1223
>>>> Kernel._finish_ws_message @ kernel.js:1015
>>>> (anonymous) @ kernel.js:1006
>>>> Promise resolved (async)
>>>> Kernel._handle_ws_message @ kernel.js:1006
>>>> i @ jquery.min.js:4
>>>>
>>>> I have have a custom javascript file called glowcomm.js that is
>>>> installed at the location
>>>>
>>>> nbextensions/vpython_libraries/glowcomm.js
>>>>
>>>> The javascript code comes from a python package called vpython that
>>>> installs some custom javascript code to this location using
>>>>
>>>>         notebook.nbextensions.install_nbextension(path =
>>>> package_dir+"/vpython_libraries",overwrite = True,user = True,verbose = 0)
>>>>
>>>>
>>>> The contents of the glowcomm.js file looks like
>>>>
>>>> define(["nbextensions/vpython_libraries/jquery-ui.custom.min",
>>>>         "nbextensions/vpython_libraries/glow.min"], function() {
>>>>
>>>> var comm
>>>>
>>>> IPython.notebook.kernel.comm_manager.register_target('my_comm_target',
>>>>
>>>> What do I need to do to register "my_comm_target"  so that I don't get
>>>> this error.
>>>>
>>>> Error: Class my_comm_target not found in registry
>>>>
>>>>
>>>>
>>>> Thanks
>>>>
>>>> John
>>>>
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Project Jupyter" group.
>>>>
>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>
>>>
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/jupyter/630e2d49-96e9-4f88-b927-42c36dfcf883%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/jupyter/630e2d49-96e9-4f88-b927-42c36dfcf883%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>> You received this message because you are subscribed to the Google Groups
>> "Project Jupyter" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/jupyter/b4f41f6a-1a49-4d52-ba85-b14ab1c5f165%40googlegroups.com
>> <https://groups.google.com/d/msgid/jupyter/b4f41f6a-1a49-4d52-ba85-b14ab1c5f165%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jupyter/CAPDWZHwLZoSaKa2RmGA0tfs7_VJoetKApuyjuQmr6PkZFgP8%2BQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to