关于:extern "js" is unsupported in wasm-gc backend.moonE4156

我在尝试:MoonBit Pearls Vol.12:初探 MoonBit 中的 JavaScript 交互
文章中有这样一个代码:

extern "js" fn consoleLog(msg : String) -> Unit = "(msg) => console.log(msg)"

我按里面的写法给moon.mod.json加了

{
  "preferred-target": "js"
}

当然我直接执行

moon run  .\cmd\main

consoleLog 是可以正常调用的,但是我在点击 test 执行

test "hello" {
  consoleLog("Hello from JavaScript!")
}

就会报标题上的错,我看test实际执行的backend是wasm-gc :

moon test -p core/cmd/fight -f fight.mbt -i 0 --target wasm-gc 

请问下,如何让test也以js执行呢

补充下,我执行指令:

moon test

consoleLog 是可以正常执行的。

现在问题是我通过点击vscode里面的test按钮执行,就会报错

编辑器里这行代码也会有语法报错

这看起来是个vscode的设置问题呢?(:thinking:

噢,我找到原因了!

起先是我发现我点了Debug后,上面的问题就不存在了

我回想了下,点击Debug会有个弹框问我 是不是要切换到js下执行。

我继续对比前后的文件差异,终于发现在target/packages.json里面可以指定默认backend:

此贴终结! :joy: