首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ktor。无法在kotlin-js端创建Httpclient实例。

Ktor。无法在kotlin-js端创建Httpclient实例。
EN

Stack Overflow用户
提问于 2020-08-09 13:52:03
回答 1查看 707关注 0票数 2

当我试图在客户端获取HttpClient实例时,我遵循js-exception

列表为空。“,cause_th0jdv$_0: null,name:"NoSuchElementException",堆栈:"NoSuchElementException:

不幸的是,遵循解决办法是没有帮助的

代码语言:javascript
复制
js {
        browser {
            dceTask {
                keep("ktor-ktor-io.\$\$importsForInline\$\$.ktor-ktor-io.io.ktor.utils.io")
            }
        }
    }

SampleJs.kt

代码语言:javascript
复制
package sample

import io.ktor.client.HttpClient
import io.ktor.client.features.json.JsonFeature
import kotlin.browser.document

actual class Sample {
    actual fun checkMe() = 14
}

actual object Platform {
    actual val name: String = "JS"
}


@Suppress("unused")
@JsName("helloWorld")
fun helloWorld(salutation: String) {
    val message = "$salutation from Kotlin.JS ${hello()}, check me value: ${Sample().checkMe()}"
    document.getElementById("js-response")?.textContent = message
}

fun main() {
    document.addEventListener("DOMContentLoaded", {
        helloWorld("Hi!")
        val client = HttpClient {
            install(JsonFeature)
        }




    })
}

build.gradle

代码语言:javascript
复制
buildscript {
    repositories {
        jcenter()
    }
}

plugins {
    id 'org.jetbrains.kotlin.multiplatform' version '1.3.72'
    id 'org.jetbrains.kotlin.plugin.serialization' version '1.3.72'
    id 'distribution'
}

repositories {
    jcenter()
    maven { url "https://dl.bintray.com/kotlin/ktor" }
    mavenCentral()
}


def ktor_version = '1.3.2'
def logback_version = '1.2.3'
def serialization_version = '0.20.0'


kotlin {
    jvm()
    js {
        browser {
            dceTask {
                keep("ktor-ktor-io.\$\$importsForInline\$\$.ktor-ktor-io.io.ktor.utils.io")
            }
        }
    }
    sourceSets {
        commonMain {
            dependencies {
                implementation kotlin('stdlib-common')
                implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serialization_version"
            }
        }
        commonTest {
            dependencies {
                implementation kotlin('test-common')
                implementation kotlin('test-annotations-common')
            }
        }
        jvmMain {
            dependencies {
                implementation kotlin('stdlib-jdk8')
                implementation "io.ktor:ktor-server-netty:$ktor_version"
                implementation "io.ktor:ktor-server-servlet:$ktor_version"
                implementation "io.ktor:ktor-html-builder:$ktor_version"
                implementation "ch.qos.logback:logback-classic:$logback_version"
                implementation "io.ktor:ktor-client-core:$ktor_version"
                implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version"
            }
        }
        jvmTest {
            dependencies {
                implementation kotlin('test')
                implementation kotlin('test-junit')
            }
        }
        jsMain {
            dependencies {
                implementation npm ("text-encoding", "0.7.0")
                implementation npm ("bufferutil", "4.0.1")
                implementation npm ("utf-8-validate", "5.0.2")
                implementation npm ("abort-controller", "3.0.0")
                implementation npm ("fs", "0.0.1-security")
                implementation kotlin('stdlib-js')
                implementation "io.ktor:ktor-client-json-js:$ktor_version"
                implementation "io.ktor:ktor-client-js:$ktor_version"
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.3.8"
                implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$serialization_version"
            }
        }
        jsTest {
            dependencies {
                implementation kotlin('test-js')
            }
        }
    }
}

jvmJar {
    dependsOn(jsBrowserProductionWebpack)
    from(new File(jsBrowserProductionWebpack.entry.name, jsBrowserProductionWebpack.outputPath))
}

task run(type: JavaExec, dependsOn: [jvmJar]) {
    group = "application"
    main = "sample.SampleJvmKt"
    classpath(configurations.jvmRuntimeClasspath, jvmJar)
    args = []
}
EN

回答 1

Stack Overflow用户

发布于 2020-11-05 07:05:40

我面对同样的问题,并通过添加

代码语言:javascript
复制
implementation("io.ktor:ktor-client-serialization:1.4.1")

在我的KotlinJS程序中。Ktor依赖项的完整列表是

代码语言:javascript
复制
implementation("io.ktor:ktor-client-js:1.4.1")  
implementation("io.ktor:ktor-client-serialization:1.4.1")

P.S.:这个解决方案受到了这些票的启发:

Ktor客户端序列化JS:无法获得默认序列化程序/ NoSuchElementException

在1.2.0-rc中找不到KotlinxSerializer

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63327124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档