【发布时间】:2021-10-05 01:04:57
【问题描述】:
您好,我开始在 Node 上使用 KotlinJS,我已经放置了一个非常简单的 kotlin 文件,我想使用原始的 kotlinc-js 编译器来编译它。 不使用 gradle
package main
fun heavy() {
(1..10_000_000).forEach { it*it }
}
fun main() {
heavy()
println("Bye JS")
}
这是我尝试过但没有成功的make 命令:
build-js:
kotlinc-js main.kt -output main.kt.js
它编译得很好,但是当我尝试运行node main.kt.js时:
throw new Error("加载模块'main.kt'时出错。它的依赖 未找到“科特林”。请检查是否事先加载了“kotlin” 到'main.kt'。"); ^
错误:加载模块“main.kt”时出错。它的依赖 'kotlin' 不是 成立。请检查是否在 'main.kt' 之前加载了 'kotlin'。 在对象。 (/home/nanospicer/KotlinProjects/KotlinScripting/main.kt.js:2:9) 在 Module._compile (node:internal/modules/cjs/loader:1101:14) 在 Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) 在 Module.load (node:internal/modules/cjs/loader:981:32) 在 Function.Module._load (node:internal/modules/cjs/loader:822:12) 在 Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12) 在节点:internal/main/run_main_module:17:47
好的,所以我认为它缺少 kotlin 运行时。我将尝试与 JVM 编译器相同的参数:-include-runtime,这会导致错误:
错误:无效参数:-include-runtime 信息:使用 -help 获取更多信息
然后我尝试了:
build-js:
kotlinc-js main.kt -kotlin-home "/mnt/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2021.2.1/plugins/Kotlin/kotlinc/" -libraries "/mnt/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2021.2.1/plugins/Kotlin/kotlinc/lib/kotlin-stdlib-js.jar" -module-kind commonjs -main call -output main.kt.js
但它仍然会导致同样的错误。我还尝试删除 libraries 标志,但也没有用
【问题讨论】:
-
这不是真正的 makefile 问题。在你的 shell 提示符下运行 build 命令,它会以同样的方式失败,所以你知道它与 makefile 无关。一旦你弄清楚如何从命令行让它工作,你可以把同样的工作命令放到你的 makefile 中。
-
是的,问题出在
kotlinc-js,这就是我要问的。我知道 makefile 只是在那里执行命令