问题标签 [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.

0 投票
1 回答
154 浏览

http-get - KotlinJs - 没有动态类型功能的简单 HTTP GET

我是 KotlinJs 的新手,我想看看它在无服务器服务开发中的潜力。

我决定从使用KotlinJs文档中建议的HTTP GET方法调用外部 API开始。但是,如果没有机制,我无法想出任何使用它的方法。XMLHttpRequest()dynamic

当然这个例子工作得很好,但我觉得它必须是更好的方法而不禁用 Kotlin 的类型检查器

  • 有没有办法只使用 KotlinJs(没有动态)?
  • 如果不可能,至少有人可以解释为什么吗?
0 投票
1 回答
270 浏览

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_gridDSL 被定义为一个自定义的 kotlinx.html 标签,它是不相关的代码。

(2) 我希望尽可能避免键入代码,asDynamic但是当我将其HTMLElement转换为 Vaadin 元素时,我得到 ClassCastExceptions (因为GridElementis undefined)。

例如我想写这样的东西:

这是我定义外部 GridElement 的方式

vaadin/按钮/Imports.kt

构建/node_modules/@vaadin/vaadin-grid/src/vaadin-grid.js

源示例

跑步:

从 git repo 的根目录:

0 投票
1 回答
109 浏览

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。该项目成功运行,仅当我尝试构建时才存在问题。

0 投票
1 回答
131 浏览

gradle - 如何扩展插件提供的任务?

我有kotlin2js任务插件compileKotlin2Js。我这样配置它:

现在我想创建类似的任务,但使用其他kotlinOptions. 例如:

怎么做?

更新:我也尝试做这样的事情:

但它会产生错误:

我也尝试指定destinationDir. 错误消失,但此类任务不会产生任何构建。

0 投票
3 回答
601 浏览

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 标识符的字符串。有没有办法解决这个问题?

0 投票
3 回答
555 浏览

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不是标准的异常属性,而是现代浏览器的常见属性。

0 投票
1 回答
178 浏览

javascript - 在使用 JS 编译 Kotlin 进行编程时,尝试在画布元素上移动圆圈时遇到问题

我正在构建一个非常简单的基于网络的“突破”,当我试图让球在画布元素上移动时遇到了麻烦。我确实在javascript中启动并运行了游戏。事情是,我现在正试图将它移植到 Kotlin(javascript 编译)。即使做了我认为必要的调整,球也不会移动。

我也遇到了类型问题(这就是为什么你会看到那些“* 1.0”在周围),因为我无法从 int 转换为 double,但我不会说这是这里的问题。此外,IDE 显示我不熟悉的评论。我在有关错误消息的部分中谈到了这一点,但消息如下:“包装到要在闭包中捕获时修改的引用对象中”。

我不确定问题到底出在哪里,但到目前为止我已经尝试过:-我的“setInterval”调用的其他签名-重新格式化程序,使我的代码在 main() 中,以摆脱返回和 'val canvas = initializeCanvas()' 调用。

预期的输出将是球向画布的右上角移动,然后消失在墙上,因为我还没有实现碰撞。

正如我所说,电流输出是一个静态球。

至于错误消息,没有。但是一个“IDE Note”一直困扰着我。在我提供的代码中,在 draw 函数中,我增加了 x 和 y。当我将鼠标悬停在它们上时,intellij 说它们“被包装到一个参考对象中,以便在闭包中捕获时进行修改”。我以前从未见过这样的警告,而且网络搜索也没有结果。

0 投票
2 回答
426 浏览

kotlin - 为什么 Kotlin/JS 对 === 的返回结果与 Kotlin/JVM 不同?

鉴于此代码:

在 Kotlin/JVM 1.3.40 上,我得到:

在 Kotlin/JS 1.3.40 上,我得到:

我希望两者的结果相同,并且我希望 Kotlin/JVM 的整体结果(因为我应该有不同的String对象)。

为什么我会根据运行时环境得到不同的结果?

0 投票
1 回答
104 浏览

testing - 如何拥有一个 KotlinJS 模块,在其中使用 JUnit 测试业务逻辑?

请耐心等待,我还没有看到多平台如何工作的全貌。

我想要实现的是有一些业务逻辑,最后编译成一个 js 文件,我可以在 HTML 中使用,并且还可以用单元测试覆盖它。

我可以使用一个简单的 KotlinJS Gradle 项目来制作第一个公园。测试部分比较棘手。感谢 kotlin-test-js 我有一些注释,比如@Test,但我想编写参数化测试,我可以使用 JUnit 来实现。

这怎么可能?

我对 JS 很陌生。mocha、qunit、karma 对我来说都是新术语,我还没有掌握多模块设置。有没有一个很好的(最新的!)关于这个的文章?

谢谢

0 投票
1 回答
2105 浏览

kotlin - 以 JavaScript 为目标时,我可以在 Kotlin 中使用协程吗?

以 JavaScript 为目标时是否可以启动任何协程?它不喜欢任何常见的方式,比如 async{}

示例:https ://github.com/thigg/no-kotlinx-in-js