【发布时间】:2020-02-17 19:59:09
【问题描述】:
我一直在使用 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"
}
}
}
}
【问题讨论】:
标签: javascript gradle kotlin kotlin-js