从 ktor 提供 kotlin 多平台 javascript
Posted
技术标签:
【中文标题】从 ktor 提供 kotlin 多平台 javascript【英文标题】:Serve kotlin multiplatform javascript from ktor 【发布时间】:2019-12-21 04:24:35 【问题描述】:我已经建立了一个多模块的 gradle 项目,其中包含一个 common 模块和一个 ktor 模块。
通用模块是一个 kotlin 多平台库。
当我从 Intellij 运行它时,我希望能够提供从 ktor 服务器的公共库生成的 javascript 文件。
目前 ktor 设置为将资源作为静态内容提供服务:
static("/static")
resources()
ktor模块对common模块有依赖:
dependencies
compile project(':common')
...
我假设在 Intellij 中运行时能够浏览到 http://localhost:8080/static/common.js 以检索公共模块 JS 构建的输出(写入 common\build\classes\kotlin\js\main),但这不起作用。
【问题讨论】:
【参考方案1】:通过包含复制任务来解决此问题。请注意,这里的 kotlin 全栈 mpp (https://github.com/ktorio/ktor-samples/tree/master/mpp/fullstack-mpp) 有一个使用 webpack 输出的示例。
kotlin
jvm()
task copyJsToJvm(type: Copy)
from("$buildDir/classes/kotlin/js/main")
include '*.*'
into "$buildDir/classes/kotlin/jvm/main"
compilations.main
tasks.getByName(processResourcesTaskName)
dependsOn(copyJsToJvm)
...
【讨论】:
以上是关于从 ktor 提供 kotlin 多平台 javascript的主要内容,如果未能解决你的问题,请参考以下文章
Ktor 多平台 - 在 kotlin 中用于 iOS 的 SSL 固定
在 Kotlin 多平台项目中使用 Ktor HttpClient 将文件作为二进制文件
Kotlin 中的多平台 InputStream 替代方案?
是否可以使用 Ktor 和/或 Kotlin 多平台在 Rest API 和 Android 应用程序之间“共享”公开的数据?