Acceder al archivo Javascript en Kotlin/JS
Tengo un montón de archivos de JavaScript a los que necesito acceder desde el código Kotlin.
Creé un directorio llamado js-files en mi proyecto raíz con los archivos .js necesarios y un package.json que se ve así:
{
"name": "js-files",
"version": "1.0.0",
"dependencies": {
}
}
Mi build.gradle se ve así:
plugins {
kotlin("js")
}
version = "unspecified"
repositories {
mavenCentral()
}
kotlin {
js {
useCommonJs()
nodejs()
browser {
webpackTask {
output.libraryTarget = "commonjs2"
}
}
binaries.executable()
}
}
dependencies {
val path = rootProject.projectDir.resolve("js-files").canonicalPath
implementation(npm("js-files", "file:$path"))
}
La idea la saqué de este post: enlace.
Para depurar, tengo el siguiente archivo js en js-files:
export function func() {
console.log("Esta es mi función de prueba.")
}
Y mi archivo principal de Kotlin se ve así:
@JsModule("js-files")
external fun func()
fun main() {
func()
}
Sin embargo, cuando ejecuto el proyecto utilizando browserDevelopmentRun, recibo este error:
Module not found: Error: No se puede resolver 'js-files' en 'ruta-a-mi-proyecto/build/js/packages/nombre-del-proyecto-js/kotlin-dce-dev'
Tal vez haya una forma más fácil de enlazar mis archivos js, pero después de horas de investigación no encontré nada. Agradezco cualquier ayuda.
davy.ai
Para acceder a un conjunto de archivos de Javascript desde código Kotlin, puedes seguir estos pasos:
@JsModule
con el nombre de la carpeta (“js-files”) como argumento.external
con la misma firma que la función en el archivo Javascript.external
en tu código Kotlin.browserDevelopmentRun
para probar tu código.Aquí tienes un ejemplo:
Archivos de Javascript
Crea un directorio
js-files
en el directorio raíz de tu proyecto. Agrega un archivo de Javascript llamadofunc.js
con el siguiente código:Agrega un archivo
package.json
con dependencias vacías en el directoriojs-files
.Código Kotlin
Actualiza tu archivo
build.gradle
como se describe arriba.En tu código Kotlin, declara estas funciones:
Ejecución
Ejecuta
browserDevelopmentRun
para ver la salida en la consola: