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

使用xterm.js运行官方示例报Terminal未定义,如何正确定义Terminal?

xterm.js提示Terminal未定义的解决方法
  • 排查资源加载是否正常
    首先打开浏览器控制台的「网络」面板,确认node_modules/xterm/lib/xterm.js的请求状态为200,没有出现404。如果是直接双击打开本地HTML文件,浏览器的安全策略会限制本地JS资源加载,建议在项目根目录启动静态文件服务(比如执行npx serve)后再访问页面。
  • 适配高版本xterm的全局导出规则
    4.0及以上版本的xterm.js不会直接将Terminal挂载到window顶层,而是挂载到window.Terminal对象的Terminal属性下,你可以修改初始化代码适配该规则:
    // 兼容新旧版本写法
    const Terminal = window.Terminal?.Terminal || window.Terminal;
    const term = new Terminal();
    
  • 保证脚本执行顺序正确
    要确保xterm.js加载完成后再执行初始化逻辑,可以把初始化代码放到window.onload回调里,避免提前执行报错,完整修正后的代码如下:
    <!doctype html>
    <html>
      <head>
        <link rel="stylesheet" href="node_modules/xterm/css/xterm.css" />
        <script src="node_modules/xterm/lib/xterm.js"></script>
      </head>
      <body>
        <div id="terminal"></div>
        <script>
          window.addEventListener('load', () => {
            const Terminal = window.Terminal?.Terminal || window.Terminal;
            const term = new Terminal();
            term.open(document.getElementById('terminal'));
            term.write('Hello from \x1B[1;3;31mxterm.js\x1B[0m $ ')
          })
        </script>
      </body>
    </html>
    
  • 工程化场景的导入方式
    如果你是在Vue/React等前端工程中使用xterm,不需要通过script标签引入,直接用ESM导入即可:
    import { Terminal } from 'xterm';
    import 'xterm/css/xterm.css';
    
    const term = new Terminal();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:18:03