Я работаю над мультиплатформенным симулятором RIS C -V в Kotlin
, и вот уже больше недели я застрял на проблеме. Я перепробовал все, что мог найти в Интернете, но мне не повезло.
Чтобы дать вам небольшой контекст: я пытаюсь связать этот проект ( здесь вы можете загрузить мой код) на VMB (виртуальная материнская плата, здесь вы можете загрузить последнюю, еще не опубликованную версию) через WebSockets
. Я уже сделал коммуникационную часть, а также протестировал ее в ветке JVM
(я также сделал еще один небольшой Kotlin JS проект только с кодом для коммуникационной части, и он работает хорошо, но почему-то когда я все собираю, просто не получается). Он строится без каких-либо ошибок, и он даже работает нормально (в некоторой степени), пока я не попытаюсь подключиться к VMB
, а затем я получаю сообщение об ошибке в консоли браузера с надписью Uncaught TypeError: this.resultContinuation_0 is undefined
. Я потерял так много часов на эту проблему, и я почти уверен, что мне не хватает чего-то маленького (возможно, даже очевидного).
Шаги для воспроизведения проблемы:
- Загрузите проекты (вам потребуются и
venus
, и VMB
) - Загрузите и установите
grunt
на свой компьютер, если его у вас нет - В папке
vmb
дважды щелкните mother.exe
и обязательно нажмите кнопку питания (работает только на windows, извините) - Откройте проект
venus
в InteliJ
и соберите его, используя gradle
(IntelliJ
обычно автоматически распознает проект как gradle
) - После завершения сборки откройте
Powershell
или cmd
в папке venus
и запустите grut dist
- Теперь результаты должны быть в каталоге
out
. - Возможно, вам понадобится
XAMPP
для локального размещения файлов на сервере на случай, если вы получите CORS Error
- Когда вы открываете страницу go на вкладке
Simulator
, а затем нажимаете кнопку Assemble & Simulate from Editor
. - Вы должны Теперь я могу увидеть ошибку в консоли.
Любая помощь приветствуется, так как я застрял в этой проблеме уже несколько дней. Спасибо!
РЕДАКТИРОВАТЬ:
При дальнейшем копании я заметил, что проблема возникает всякий раз, когда я вызываю suspend
функцию onclick
.
Например: я сделал функция в Driver.kt
:
@JsName("connect")
suspend fun connect() {
sim.connectToMotherboard()
}
Где connectToMotherboard()
- это приостановленная функция, которую я вызываю всякий раз, когда нажимается кнопка.
HTML:
<button class="button is-primary" onclick="driver.connect()">Connect to Motherboard</button>
Это дает мне ту же ошибку, что упоминается в заголовке. После того, как я скачал Firefox
для разработчиков, я получил это сообщение:
Uncaught TypeError: can't access property "context", this.resultContinuation_0 is undefined