我一直在使用 Kotlin 开发一个小型 2D 模拟软件,并且我正在使用 Kotlin 多平台项目使其在 JVM 和浏览器上运行。到目前为止,它运作良好。
但是,当我想从常规 Javascript 调用 Kotlin/JS 中定义的函数时,我遇到了问题。
为了使我的应用程序在浏览器中运行,我在运行“build”Gradle 任务后包含了位于“build/distributions”文件夹下的大 JS 文件。当我的 Kotlin/JS 应用程序包含一个main()函数时,当打开引用 JS 文件的 HTML 页面时会自动调用这个函数,它运行良好。
但是,如果我删除了 main 函数,而是创建了一个应该手动调用的start()函数(例如,在单击按钮之后),它就不起作用:它说函数start()没有定义即使它是在 Kotlin 代码中声明的。
打开生成的 JS 文件后,似乎确实没有start()函数。看起来所有函数的名称都被缩小了。
我尝试添加@JsName,但它没有改变任何东西。
所以我想我做错了什么,但我真的不知道是什么以及如何让它工作。
注意:我使用的是 Kotlin 1.3.70
编辑:这是我的 build.gradle.kts 的核心:
plugins {
kotlin("js") version "1.3.70-eap-184"
}
repositories {
mavenLocal()
mavenCentral()
maven(url = "https://dl.bintray.com/kotlin/kotlin-eap")
}
dependencies {
}
kotlin {
target {
nodejs {
}
browser {
webpackTask {
mode = org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode.PRODUCTION
bin = "$projectDir/node_modules/$bin"
}
}
}
}