Я работаю над мультиплатформенным симулятором RISC-V в Kotlin
и уже больше недели не могу решить проблему. Я пробовал все, что мог найти в Интернете, но мне не повезло.
Чтобы дать вам небольшой контекст: я пытаюсь связать этот проект (здесь вы можете скачать мой код) на VMB (виртуальная материнская плата, здесь можно скачать последнюю, еще не опубликованную версию ) через WebSockets
. Я уже сделал коммуникационную часть, а также протестировал ее на ветке JVM
(я также сделал еще один небольшой Kotlin JS project только с кодом для коммуникационной части, и он отлично работает, но по какой-то причине, когда я собрал все вместе, он просто не работает). Он строится без каких-либо ошибок и даже работает нормально (до некоторой степени), пока я не попытаюсь подключиться к 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
- Когда вы откроете страницу, перейдите на вкладку
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
venus
. Проблема в том, что когда я запускаю небольшой проект, он прекрасно соединяется сVMB
, но когда я пытаюсь интегрировать его в основной проект, он выдает эту ошибку. Вот небольшой проект: github.com/benny1611/korio-websockets-test - person benny b   schedule 10.07.2020suspend
в обычной функции вDriver.kt
во внешнем интерфейсе. Ссылка: ufile.io/hsiwsl2j - person benny b   schedule 10.07.2020