Cómo convertir código JS a Kotlin sin la palabra key 'nueva'

Estoy buscando la conversión de algunos JS básicos a Kotlin, pero estoy atrapado en la new palabra key. No estoy seguro de cómo convertir el siguiente JS a Kotlin

 var FCM = require('fcm-node'); var fcm = new FCM('YOURSERVERKEYHERE'); var message = { ... }; fcm.send(message, function(err, response){ ... } 

Lo intenté

 fun sendTestPush() { val FCM = require("fcm-push") val fcm = new FCM("YOURSERVERKEYHERE") val data = Data("Title", "Message") val message = Message("registration_id", data) fcm.send(message) } data class Message(val to: String, val data: Data) data class Data(val title: String, val message: String) 

Obtengo el error de compilation Unresolved reference: new ya que Kotlin no la tiene. Sin el 'nuevo' obtengo el error esperado Attempting to TypeError: Cannot read property 'send' of undefined

Alguna idea para evitar este problema?

Editar: la class FCM es el package npm https://www.npmjs.com/package/fcm-push

Lo sentimos, pero su respuesta que marcó como correcta, de hecho es incorrecta. Tengo que decirlo, ya que alguien que está buscando la respuesta correcta lo encontrará y escribirá un código incorrecto. En general, no debe llamar directamente a la function require de Kotlin. Por el contrario, debe usar @JsModule junto con declaraciones external . En su caso particular, sería algo como esto:

 @JsModule("fcm-push") external class FCM(serverKey: String) { fun send(message: Any?, callback: (err: Any?, response: Any?) -> Unit) fun send(message: Any?): Promise<Any> } val serverKey = "YOURSERVERKEYHERE" val fcm = FCM(serverKey) //... fcm.send(message) 

Además, debe pasar commonjs a moduleKind compiler flag. Vea la página de documentation correspondiente para una descripción completa.

La function de requerir en Kotlin no es la misma que la requerida en NodeJS, que probablemente se usa en su código JS.

Cualquiera que sea su class de FCM, solo ejecútelo sin la new palabra key.

Gracias a una pista de @Claies logré que funcionara con el js(...) wrap. ~~~

 val FCM = require("fcm-push") val serverKey = "YOURSERVERKEYHERE" val fcm = js("new FCM(serverKey)") ... fcm.send(message) // now works 

No estoy seguro de estar totalmente feliz con la escritura de js puros dentro de una string en kotlin, así que espero que haya una mejor manera que me he perdido.

Editar: Lo anterior funciona, pero no es lo ideal, consulte la respuesta aceptada para una mejor implementación

  • Kotlin networkinguce la function para que la list 2d no funcione
  • Elementos seleccionados en el menu
  • En Kotlin, cómo hacer que una propiedad sea accesible solo por tipo específico
  • Cloud.orbit.exception.UncheckedException: no sé cómo manejar el estado
  • Seguimiento de gestos desde el service de Android
  • Comstackción manual de JAR para Scala & Kotlin
  • ¿Cómo agregar una image más como un button al final de mi RecyclerView en Android?
  • Kotlin con JPA / Hibernate: sin carga lenta sin `abrir`?
  • ¿Puedo get una KFunction de una variable del tipo de function en Kotlin?
  • string array literal? ¿Cómo lo codigo simplemente?
  • Andoird anko DSL: ¿se agregan textviews y se convierten en "nueva línea" cuando no hay más ancho de pantalla?