在Kotlin Javascript中传递参数时,'x'不是函数

我不断收到此错误: TypeError:Scraper.dumpTitle不是一个函数

而我无法弄清楚为什么…

的index.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Kotlin JS Demo</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <script src="out/production/lib/kotlin.js"></script> <script src="out/production/Scraper.js"></script> <!--<script>--> <!--function loaded() {--> <!--}--> <!--</script>--> <script> $(function() { Scraper.dumpTitle(document) }) </script> </body> </html> 

Main.js

 import kotlin.browser.document /** * * * * - */ fun main(args: Array<String>) { println("Hello") } fun dumpTitle(doc: dynamic) { println(doc.title) } fun dumpTitle1() { println(document.title) } 

生成的JS

 if (typeof kotlin === 'undefined') { throw new Error("Error loading module 'Scraper'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'Scraper'."); } var Scraper = function (_, Kotlin) { 'use strict'; var println = Kotlin.kotlin.io.println_s8jyv4$; function main(args) { println('Hello'); } function dumpTitle(doc) { println(doc.title); } function dumpTitle1() { println(document.title); } _.main_kand9s$ = main; _.dumpTitle_za3rmp$ = dumpTitle; _.dumpTitle1 = dumpTitle1; Kotlin.defineModule('Scraper', _); main([]); return _; }(typeof Scraper === 'undefined' ? {} : Scraper, kotlin); 

笔记

  1. 调用dumpTitle1()工作正常..所以我dumpTitle1()的问题是只传递参数
  2. 没有必要指出,我可以访问Kotlin中的document变量,而不需要通过它,我知道…但我想传递另一个document对象使用

如果你从JavaScript调用Kotlin函数,你需要使用@JsName注释来给它一个稳定的名字。 看到这里的文件。

 @JsName("dumpTitle") fun dumpTitle(doc: dynamic) { println(doc.title) }