IJavascript内核需Node.js≥16.x和npm≥8.x,路径配置错误、ijskernel未注册、kernel.json语言字段非"javascript"或模块解析失败是常见原因。

ijavascript 内核能让你在 Jupyter Notebook / Lab 里直接运行 Node.js 风格的 JavaScript,不是浏览器环境,不支持 document 或 window。装不上、启动报错、选不到内核——这些问题基本都卡在 Node.js 和路径配置上。
确认 Node.js 和 npm 已正确安装
这是硬性前提,ijavascript 本质是 Node.js 的封装,没它就完全跑不起来。
- 运行
node --version和npm --version,必须有输出(建议 Node.js ≥ 16.x,npm ≥ 8.x) - 如果提示命令未找到,说明 Node.js 没加进系统 PATH;Windows 用户尤其注意:安装时勾选 “Add to PATH” 选项,macOS/Linux 用户检查
~/.nvm/versions/node/...或/usr/local/bin是否在$PATH里 - 别用 nvm 管理多个 Node 版本却没激活当前 shell 的版本——
ijsinstall会按当前 shell 的node路径去生成内核,换终端可能失效
ijsinstall 执行失败或找不到 ijskernel
常见报错:FileNotFoundError: [Errno 2] No such file or directory: 'ijskernel',本质是全局 bin 目录没被 Jupyter 识别到。
- 先手动验证
ijskernel是否存在:运行which ijskernel(macOS/Linux)或where ijskernel(Windows),没输出就说明npm install -g ijavascript没成功或权限不对 - Windows 上 npm 全局安装常因权限被拦截,改用管理员权限打开 PowerShell 或 CMD 再执行
npm install -g ijavascript - 如果
which ijskernel有结果(比如/usr/local/bin/ijskernel),但ijsinstall仍失败,加参数强制指定:ijsinstall --spec-path=full - 某些 Conda 环境下,
npm可能调用的是 Conda 自带的 node,和系统 node 冲突,建议统一用系统 Node.js + 独立 npm
Jupyter 启动后看不到 “JavaScript (Node.js)” 选项
内核注册没落到 Jupyter 能扫描的目录,或者名字冲突。
- 运行
jupyter kernelspec list,看输出里有没有javascript或类似条目;没有就说明ijsinstall没生效 - 如果有但名字是
ijavascript或nodejs,那是旧版行为,新版默认名就是javascript,不影响使用,但 UI 显示可能不一致 - 如果看到
javascript但 Notebook 里没出现,检查 kernel.json 里的"language"字段是否为"javascript"(不能写成"js"或"node") - 重启 Jupyter:关掉所有 notebook 进程,再执行
jupyter notebook,内核列表不会热加载
内核启动后报错 “Cannot find module ‘xxx’”
这是 Node.js 模块解析问题,和 Python 内核完全不同——ijavascript 默认工作目录是 notebook 打开时的路径,但 require() 查找的是 node_modules 相对位置。
- 不要依赖全局安装的包(如
npm install -g lodash),require('lodash')会失败;必须在 notebook 当前目录下npm init -y && npm install lodash - 想跨 notebook 复用模块?把模块路径加进
NODE_PATH环境变量,或在代码开头加require('module').globalPaths.push('/path/to/your/modules') - 注意
__dirname和process.cwd()区别:前者是 kernel 启动脚本所在目录(固定),后者才是 notebook 文件所在目录,require('./utils')是基于后者解析的
真正麻烦的不是安装步骤,而是 Node.js 运行时环境和 Jupyter 内核生命周期之间的隐含耦合——比如 kernel 启动时加载的 process.env,和你在终端里敲 node 时看到的未必一致。调试时多看 jupyter notebook --debug 输出,比反复重装管用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











