我正在开发一个多平台的 RISC-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
- 当您打开页面时,转到
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