Как устранить ошибку «AttachAddon не является конструктором» на Chrome? - PullRequest
1 голос
/ 14 февраля 2020

Просто пытаюсь заставить работать аддон Attach. Основной xterm (4.4.0) работает нормально, но консоль Chrome browser Javascript сообщает «Uncaught TypeError: AttachAddon не конструктор», когда я пытаюсь сослаться на аддон. Веб-сервер golang / echo, и я извлекаю xterm. js и xterm-addon-attach. js из пакетов следующим образом:

<!doctype html>
  <html>
    <head>
      <link rel="stylesheet" href="xterm.css" />
      <script src="xterm.js"></script>
      <script src="xterm-addon-attach.js"></script>
    </head>
    <body>
      <div id="terminal"></div>
      <script>

        var term = new window.Terminal();

        term.open(document.getElementById('terminal'));

        ws = new WebSocket('ws://example.net:8080/ws')

        const attachAddon = new AttachAddon(ws);
        term.loadAddon(attachAddon);

      </script>
    </body>
  </html>

Может кто-нибудь помочь указать, что я сделал неправильно?

Кроме того, примеры в документах, откуда я это взял, не содержат вызова term.open (), так как же экземпляр Terminal узнает, к какому элементу присоединиться? Например, https://github.com/xtermjs/xterm.js/tree/master/addons/xterm-addon-attach

Большое спасибо заранее

Энди

Обновление:

Я изменил HTML, чтобы включить операторы импорта выглядят следующим образом:

<!doctype html>
  <html>
    <head>
      <link rel="stylesheet" href="xterm.css" />
      <script src="xterm.js"></script>
    </head>
    <body>
      <div id="terminal"></div>
      <script type="module"> 
        import { AttachAddon } from "./xterm-addon-attach.js";

        var term = new window.Terminal();

        term.open(document.getElementById('terminal'));

        ws = new WebSocket('ws://boundstone.dynamic-dns.net:8080/ws');

        const attachAddon = new AttachAddon(ws);
        term.loadAddon(attachAddon);

      </script>
    </body>
  </html>

, но консоль Chrome теперь сообщает: «Запрошенный модуль» ./xterm-addon-attach.js »не обеспечивает экспорт с именем« AttachAddon ». «». Веб-сервер обслуживает сценарий с типом содержимого application / javascript, а консоль Chrome распознает структуру AttachAddon как веб-пакет, который выглядит.

Боюсь, я не знаком, так как четко должно быть с JS модулями. Веб-сервер для моего проекта не является (и не может быть) узлом, но имеет ли это значение?

Большое спасибо заранее

Энди

...