jupyter notebook网页显示空白主要因前端资源加载失败或通信异常,需通过浏览器开发者工具的console和network标签页排查错误,常见原因包括端口被占、js/css mime类型注册表污染、require.js未加载等,windows用户可临时修改notebookapp.py强制设置mime类型。

Jupyter Notebook网页显示空白,大概率不是代码或内核问题,而是前端资源加载失败或浏览器与服务端通信异常。直接换浏览器往往能绕过问题,但治标不治本;真正要定位,得看控制台报什么错、端口是否干净、JS/CSS MIME 类型是否被系统注册表污染。
打开浏览器开发者工具看 Console 和 Network 标签页
这是最快速有效的第一判断步骤。白屏时右键 → “检查” → 切到 Console,常见线索有:
-
Failed to load resource: net::ERR_CONNECTION_REFUSED:说明前端尝试连接的地址(比如http://localhost:8888/static/...)根本没响应,可能是服务没起来,或端口被占 -
MIME type (“text/plain”) is not executable或Refused to execute script from ... because its MIME type (...) is not “text/javascript”:Windows 上常见,系统注册表把.js文件关联成了纯文本,导致 Tornado 误判 MIME 类型 -
Uncaught ReferenceError: require is not defined:前端 JS 没加载成功,可能是/static/components/requirejs/require.js404,根源常是mimetypes配置错误或包损坏
再切到 Network 标签页,刷新页面,观察哪些 .css、.js 请求状态码是 404 或返回内容为空。重点盯 main.min.js、tree.js、base.css 这几类文件。
Windows 下修复 .js 和 .css 的 MIME 类型
这是 Windows 用户高频踩坑点,尤其用过旧版软件或手动改过系统注册表后。Jupyter Notebook 启动的 Tornado 服务会查系统注册表获取扩展名对应 MIME 类型,一旦 .js 被注册为 text/plain,浏览器就会拒绝执行。
临时修复方法(推荐):
- 找到你的
notebookapp.py文件,路径类似:python/Lib/site-packages/notebook/notebookapp.py - 在文件末尾(函数定义外)添加两行:
import mimetypes
mimetypes.add_type('application/javascript', '.js')
mimetypes.add_type('text/css', '.css')
重启 jupyter notebook 即可。这个补丁强制覆盖系统注册表行为,不影响其他应用。
端口冲突或残留进程导致服务假启动
现象是终端显示 Jupyter Notebook 7.13.0 is running at: http://localhost:8888/...,但浏览器白屏,且 jupyter notebook list 查不到实例。本质是上一次进程没彻底退出,新进程绑定了端口却无法正常提供静态资源服务。
- 先执行
lsof -i :8888(macOS/Linux)或netstat -ano | findstr :8888(Windows),找出 PID - 杀掉对应进程:
kill -9 PID或 Windows 里用taskkill /PID PID /F - 启动时显式指定新端口:
jupyter notebook --port=8890,避开 8888/8889 这两个易冲突端口 - 如果仍不行,加
--no-browser启动,再手动复制终端输出的完整 URL(含 token)粘贴进浏览器,排除浏览器自动打开逻辑干扰
pyecharts / matplotlib 图表空白是另一类问题
注意:这种“空白”仅发生在单元格输出区,页面主体是正常的,和前述完全白屏不同。典型表现是 bar.render_notebook() 执行后啥也不显示。
- pyecharts 必须显式调用
bar.load_javascript(),否则 ECharts JS 不加载,只生成空容器 - matplotlib 需提前运行魔法命令:
%matplotlib inline,否则绘图对象不会渲染到输出区 - 若用 JupyterLab 而非 classic Notebook,pyecharts 需设置:
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
这类问题不会让整个页面白屏,但容易和主界面问题混淆——排查前先确认:是整个浏览器窗口空白,还是仅某个 cell 输出为空?前者看服务端和浏览器兼容性,后者看库的初始化逻辑。











