Как загрузить модуль ES6 для расширения ноутбука Jupyter? - PullRequest
0 голосов
/ 04 апреля 2019

В настоящее время я использую Jupyter Notebook Server версии 5.7.0. Я хотел бы написать расширение для ноутбука Jupyter, которое загружает некоторый модуль ES6, добавляя тег скрипта в документ, например:

<script type="module" scr='./es6module.js'>

Тег script добавлен, но мне не удалось правильно задать путь scr / предоставить моему файлу правильный тип mime.

Приведенный выше тег script ищет файл es6module.js в папке notebook.

Я также попытался сослаться на файл в моей папке расширений:

<script type="module" scr='/nbextensions/my_extension_folder/es6module.js'>

В обоих случаях я получаю

Failed to load module script: The server responded with a non-JavaScript MIME type of "text/plain". Strict MIME type checking is enforced for module scripts per HTML spec.

=> Есть ли какой-нибудь http-путь, куда файлы подаются с требуемым типом mime, чтобы позволить модулям ES6? Может быть, что-то вроде

<script type="module" scr='/http/nbextensions/my_extension_folder/es6module.js'>

=> Или я должен попытаться запустить собственный http-сервер с использованием Python?

Jupyter.notebook.kernel.execute('http.server');

Пример кода расширения:

define([
    'require',
    'jquery',
    'base/js/namespace'       
], function(
    requirejs,
    $,
    Jupyter       
) {

    var load_ipython_extension = function() {  
        if (Jupyter.notebook !== undefined && Jupyter.notebook._fully_loaded) {
            init();                    
        } else {
            console.log("[workspace_module] Waiting for notebook availability")
            events.on("notebook_loaded.Notebook", function() {
                init();                           
            })
        }
    };

    function init(){

        console.log("[workspace_module] trying to load workspace.js")

        var moduleScript = document.createElement('script');
        moduleScript.setAttribute('type','module'); 

        moduleScript.setAttribute('src','/nbextensions/my_extension_folder/es6module.js');  

        document.head.appendChild(moduleScript);
    }


    return {
        load_ipython_extension: load_ipython_extension       
    };

});

Редактировать

Может быть связано с

https://github.com/jupyter/notebook/pull/4468

1 Ответ

0 голосов
/ 08 апреля 2019

Я попробовал это с версией 5.7.8 Jupyter Notebook, и загрузка модулей ES6 работает.

...