问题标签 [kotlin-js]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
http-get - KotlinJs - 没有动态类型功能的简单 HTTP GET
我是 KotlinJs 的新手,我想看看它在无服务器服务开发中的潜力。
我决定从使用KotlinJs文档中建议的HTTP GET方法调用外部 API开始。但是,如果没有机制,我无法想出任何使用它的方法。XMLHttpRequest()
dynamic
当然这个例子工作得很好,但我觉得它必须是更好的方法而不禁用 Kotlin 的类型检查器。
- 有没有办法只使用 KotlinJs(没有动态)?
- 如果不可能,至少有人可以解释为什么吗?
vaadin - 在 kotlin js 项目中使用 Vaadin 组件
这个问题是关于一个使用 Kotlin 前端插件的 Kotlin JS 项目。
我想使用Vaadin 组件库中的一些 UI 组件。
我对此有两个问题:
(1) 在 Kotlin JS 中包含 Web 组件的最佳方式是什么
=> 对于我的完整代码,请参阅下面的源链接。总而言之,相关细节是:
构建.gradle.kts
vaadin.grid.Imports.kt
为什么companion object
?我需要它来解决问题(见下文)。
foo.kt
这console.log
是我想避免的丑陋的解决方法。如果我不对GridElement做任何事情,那么它就不会包含在我的捆绑包中。
vaadin_grid
DSL 被定义为一个自定义的 kotlinx.html 标签,它是不相关的代码。
(2) 我希望尽可能避免键入代码,asDynamic
但是当我将其HTMLElement
转换为 Vaadin 元素时,我得到 ClassCastExceptions (因为GridElement
is undefined
)。
例如我想写这样的东西:
这是我定义外部 GridElement 的方式
vaadin/按钮/Imports.kt
构建/node_modules/@vaadin/vaadin-grid/src/vaadin-grid.js
跑步:
从 git repo 的根目录:
reactjs - 使用 IntelliJ 构建反应 kotlin 应用程序时出错
我使用create-react-kotlin-app
. 成功后npm start
,我尝试使用IntelliJ IDEA
's构建项目Build -> Build Project
,但无法说明
错误:(16, 44) Kotlin: Can't access property 'reactLogo'marked with @JsModule annotation from non-modular project
我在这里想念什么?
注意:我没有对自带的模板做任何修改create-react-kotlin-app
。该项目成功运行,仅当我尝试构建时才存在问题。
gradle - 如何扩展插件提供的任务?
我有kotlin2js
任务插件compileKotlin2Js
。我这样配置它:
现在我想创建类似的任务,但使用其他kotlinOptions
. 例如:
怎么做?
更新:我也尝试做这样的事情:
但它会产生错误:
我也尝试指定destinationDir
. 错误消失,但此类任务不会产生任何构建。
kotlin - Kotlin/JS 外部声明 - “名称包含不能出现在 JavaScript 标识符中的非法字符”
编辑: Kotlin YouTrack尚不支持和跟踪
我正在尝试编写external
与以下 Typescript 接口匹配的 Kotlin 声明(这是通过 表示 JavaScript 访问的有效 TS headers['content-length']
):
Dukat 生成以下内容,应视为有效:
但现在编译器抱怨:
Name contains illegal chars that can't appear in JavaScript identifier
确实不能出现在 JS 标识符中,但也不是必须的。所有 Kotlin 对该属性的访问,例如:
如果编译为const length = headers["content-length"]
.
我尝试通过@JsName
以下方式解决它:
@JsName("content-length")
@JsName("'content-length'")
@JsName("\"content-length\"")
但是所有这些都失败了,因为它们只允许作为有效 JS 标识符的字符串。有没有办法解决这个问题?
javascript - 我可以在 kotlin-js 中获取异常堆栈跟踪吗?
我一直在用 kotlin-js 为应用程序编写简单的 Web 前端,并面临异常处理的问题。如我所见,没有 API 可以获取异常堆栈跟踪:https ://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html 是这样吗?如果是,可能有人知道一些库或片段可以从 Throwable 对象中获取堆栈跟踪吗?
目前,我有一些解决方法:
控制台输出为:
这里console.log(Throwable)
公开了底层的 JavaScript 对象属性,有stack
一个,但它指向 JavaScript 代码,如果没有将源映射回 kotlin,就很难使用。
UPD:似乎stack
不是标准的异常属性,而是现代浏览器的常见属性。
javascript - 在使用 JS 编译 Kotlin 进行编程时,尝试在画布元素上移动圆圈时遇到问题
我正在构建一个非常简单的基于网络的“突破”,当我试图让球在画布元素上移动时遇到了麻烦。我确实在javascript中启动并运行了游戏。事情是,我现在正试图将它移植到 Kotlin(javascript 编译)。即使做了我认为必要的调整,球也不会移动。
我也遇到了类型问题(这就是为什么你会看到那些“* 1.0”在周围),因为我无法从 int 转换为 double,但我不会说这是这里的问题。此外,IDE 显示我不熟悉的评论。我在有关错误消息的部分中谈到了这一点,但消息如下:“包装到要在闭包中捕获时修改的引用对象中”。
我不确定问题到底出在哪里,但到目前为止我已经尝试过:-我的“setInterval”调用的其他签名-重新格式化程序,使我的代码在 main() 中,以摆脱返回和 'val canvas = initializeCanvas()' 调用。
预期的输出将是球向画布的右上角移动,然后消失在墙上,因为我还没有实现碰撞。
正如我所说,电流输出是一个静态球。
至于错误消息,没有。但是一个“IDE Note”一直困扰着我。在我提供的代码中,在 draw 函数中,我增加了 x 和 y。当我将鼠标悬停在它们上时,intellij 说它们“被包装到一个参考对象中,以便在闭包中捕获时进行修改”。我以前从未见过这样的警告,而且网络搜索也没有结果。
kotlin - 为什么 Kotlin/JS 对 === 的返回结果与 Kotlin/JVM 不同?
鉴于此代码:
在 Kotlin/JVM 1.3.40 上,我得到:
在 Kotlin/JS 1.3.40 上,我得到:
我希望两者的结果相同,并且我希望 Kotlin/JVM 的整体结果(因为我应该有不同的String
对象)。
为什么我会根据运行时环境得到不同的结果?
testing - 如何拥有一个 KotlinJS 模块,在其中使用 JUnit 测试业务逻辑?
请耐心等待,我还没有看到多平台如何工作的全貌。
我想要实现的是有一些业务逻辑,最后编译成一个 js 文件,我可以在 HTML 中使用,并且还可以用单元测试覆盖它。
我可以使用一个简单的 KotlinJS Gradle 项目来制作第一个公园。测试部分比较棘手。感谢 kotlin-test-js 我有一些注释,比如@Test,但我想编写参数化测试,我可以使用 JUnit 来实现。
这怎么可能?
我对 JS 很陌生。mocha、qunit、karma 对我来说都是新术语,我还没有掌握多模块设置。有没有一个很好的(最新的!)关于这个的文章?
谢谢
kotlin - 以 JavaScript 为目标时,我可以在 Kotlin 中使用协程吗?
以 JavaScript 为目标时是否可以启动任何协程?它不喜欢任何常见的方式,比如 async{}