Я использую Kotlin для разработки небольшого программного обеспечения для 2D-моделирования, и я использую многоплатформенные проекты Kotlin, чтобы заставить его работать как на JVM, так и в браузере. Пока это работает хорошо.
Однако у меня возникает проблема, когда я хочу вызывать функции, определенные в Kotlin/JS, из обычного Javascript.
Чтобы мое приложение работало в браузере, я включаю большой JS-файл, который находится в папке «build/distributions» после запуска задачи Gradle «build». Когда мое приложение Kotlin/JS содержит функцию main(), она автоматически вызывается при открытии страницы HTML, ссылающейся на файл JS, и работает хорошо.
Но если я удаляю основную функцию и вместо нее создаю функцию 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"
}
}
}
}