You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Skulpt搭建网页Python解释器报Sk is not defined错误如何解决

问题根因与解决方案

Uncaught ReferenceError: Sk is not defined 报错的核心原因是Skulpt相关的JS脚本没有被浏览器成功加载,导致全局对象Sk未初始化,按以下优先级排查修复:

1. 修复资源加载协议问题

你当前使用的是http协议的Skulpt公共CDN链接,若你的个人网站是https协议,浏览器会触发混合内容拦截规则,直接阻止非安全的HTTP资源加载,导致Sk对象无法生成。
将head区域的脚本引入替换为HTTPS协议版本即可:

<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript"></script> 
<script src="https://www.skulpt.org/js/skulpt.min.js" type="text/javascript"></script> 
<script src="https://www.skulpt.org/js/skulpt-stdlib.js" type="text/javascript"></script> 
</head>

2. 解决CDN可用性问题

如果修改协议后仍报错,打开浏览器F12开发者工具的「网络」面板,刷新页面查看skulpt.min.js、skulpt-stdlib.js的请求状态:

  • 若返回404/加载失败,说明官方公共CDN对你的网络不可用,可将两个Skulpt的JS文件下载到站点本地,改为引用本地路径即可,避免跨域、CDN节点故障问题
  • 若返回200正常,可在控制台输入Sk回车,能返回对象说明加载完成,此时点击运行按钮即可正常执行

3. 容错优化(可选)

可以给执行函数加前置判断,避免资源未加载完成时点击按钮抛出异常:

function runit() {
  // 新增前置校验逻辑
  if (typeof Sk === 'undefined') {
    alert('解释器资源加载中,请稍候重试');
    return;
  }
  // 原有代码逻辑保持不变
  var prog = document.getElementById("yourcode").value; 
  var mypre = document.getElementById("output");
  // ...后续原有代码
}

内容的提问来源于stack exchange,提问作者Rocka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:45:01