You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle中Kotlin JS模块依赖多平台模块时代码不可用如何解决

解决方案

核心原因

你当前遇到的问题由两点配置缺失导致:

  • 多平台:api模块未补全JS目标的标准库依赖,也未显式声明JS目标输出为可被外部依赖的库
  • 单平台JS的:client模块依赖多平台模块时,未指定匹配JS目标的依赖变体

第一步:修改api/build.gradle配置

调整后的完整配置如下:

plugins {
    id 'org.jetbrains.kotlin.multiplatform'
}

group 'io.codegoblin'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

kotlin {
    jvm()
    js {
        useCommonJs()
        browser()
        // 新增:显式声明JS目标输出为可被依赖的库
        binaries.library()
    }

    sourceSets {
        commonMain {
            dependencies {
                implementation kotlin('stdlib-common')
            }
        }
        // 新增:补全JS目标的标准库依赖
        jsMain {
            dependencies {
                implementation kotlin('stdlib-js')
            }
        }
        // 新增:补全JVM目标的标准库依赖
        jvmMain {
            dependencies {
                implementation kotlin('stdlib-jdk8')
            }
        }
    }
}

第二步:修改client/build.gradle依赖配置

将:api模块的依赖声明调整为指定JS目标变体:

dependencies {
    // 修改:指定依赖多平台模块的JS运行时变体
    implementation project(path: ":api", configuration: "jsRuntimeElements")

    implementation("org.jetbrains:kotlin-react:17.0.2-pre.154-kotlin-$kotlin_version")
    implementation("org.jetbrains:kotlin-react-dom:17.0.2-pre.154-kotlin-$kotlin_version")
    implementation(npm("react", "$react_version"))
    implementation(npm("react-dom", "$react_version"))
}

验证生效

执行以下命令重新构建项目:

./gradlew clean build

构建完成后可以在client/build/js/packages/client/kotlin/目录下看到:api模块编译后的JS代码,同时client模块代码中可以正常导入:api模块的公共类、方法。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:54:08