Dado este código, ¿dónde debo colocar el archivo.json para poder encontrarlo en el tiempo de ejecución?
// path: src/main/kotlin/Server.kt fun main() { val serviceAccount = require("file.json") } Intenté colocarlo en src/main/resources/ sin suerte. También uso Gradle para compilar kotlin a js con el complemento kotlin2js .
Suponiendo que el compilador de Kotlin coloca el archivo JS creado (por ejemplo, server.js ) en la ubicación predeterminada en build/classes/kotlin/main y el archivo de recursos ( file.json ) en build/resources/main .
Y está ejecutando server.js ejecutando node build/classes/kotlin/main/server.js
Según la documentación de NodeJS:
Los módulos locales y los archivos JSON se pueden importar usando una ruta relativa (p. ej., ./, ./foo, ./bar/baz, ../foo) que se resolverá en el directorio nombrado por __dirname (si está definido) o el directorio de trabajo actual. directorio. ( https://nodejs.org/api/modules.html#modules_require_id )
En nuestro caso, __dirname es build/classes/kotlin/main
Así que la instrucción require correcta es:
val serviceAccount = js("require('../../../resources/main/file.json')") o si require se define como una función de Kotlin como en la pregunta
val serviceAccount = require("../../../resources/main/file.json")Puede usar js("require('./file.json')") si no tiene import para la función require en Kotlin. El resultado será dynamic , por lo que puede enviarlo a Map .
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/js.html