В настоящее время я использую 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