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