Прокси-сервер JupyterLab из NodeJs сбой для определенного запроса - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь проксировать JupyterLab через Node js. Все работает нормально, но когда я нажимаю создать любую записную книжку. запрос к /jupyterLab/api/contents/ не выполняется.


Ниже приведены некоторые сведения:

Версия узла - v9.4.0

Версия JupyterLab -

     jupyter core     : 4.6.3
     jupyter-notebook : 5.7.9
     qtconsole        : 4.5.4
     ipython          : 5.8.0
     ipykernel        : 4.10.1
     jupyter client   : 5.3.4
     jupyter lab      : 0.33.12
     nbconvert        : 5.6.1
     ipywidgets       : 7.5.1
     nbformat         : 4.4.0
     traitlets        : 4.3.3

Использование фреймворка Express. [Ref https://expressjs.com/en/starter/generator.html]

NodeJs прокси-пакет - http-proxy-middleware [Ref https://www.npmjs.com/package/http-proxy-middleware]

Приложение узла работает на http://localhost:3001/

JupyterLab работает на http://localhost:8889/


Код узла

var express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
var app = express();

app.use('/jupyterLab/', createProxyMiddleware({
    target : "http://localhost:8889/",
    ws     : true
}));

module.exports = app;

Конфигурация JupyterLab

c.NotebookApp.open_browser = False
c.NotebookApp.port = 8889
c.NotebookApp.base_url = '/jupyterLab/'
c.NotebookApp.token = ''
c.NotebookApp.notebook_dir = "D:jupyterLab"
c.NotebookApp.allow_origin = '*'
c.NotebookApp.tornado_settings = {
    'headers': {
        'Content-Security-Policy': "frame-ancestors 'self' http://127.0.0.1:3001/ http://127.0.0.1:3001/* http://localhost:3001/ http://localhost:3001/*",
    }
}

HTML - Метод 1

<!-- Without proxy, it works perfectly fine. But Node isn't involved here. -->
<iframe 
    src    = "http://localhost:8889/jupyterLab/"
    height = "400px"
    width  = "100%"
></iframe>
[![Screenshot -> Without proxy][1]][1]

HTML - Метод 2 <- Цель. </p>

<!--  With proxy, Works fine, but when we click on Notebook, an API call happens, which stays in pending state for 2-4 min and then fails. -->
<iframe 
    src    = "/jupyterLab/"
    height = "400px"
    width  = "100%"
></iframe>
[![With Proxi - API failing][1]][1]
...