如何将 JS 目标添加到 KMM 项目?

How do I add a JS target to a KMM project?

我有一个 AndrodiStudio KMM 项目,我想添加一个 JS 目标。

鉴于 JS 开发只能在 IntelliJ 中使用,我希望我必须在 IDEA 中打开项目并添加一个“模块”——但我什至不知道该选择哪个——[=其中 56=] 似乎“合适”:

所以我的问题是:

我的代码的当前结构对应 1:1 Android Studio 中的 KMM 项目模板:https://github.com/stefanhaustein/komponents

*) 错误信息:

Error resolving plugin [id: 'org.jetbrains.kotlin.multiplatform', version: '1.4.31']
> Plugin request for plugin already on the classpath must not include a version

通过创建一个新的 Kotlin/JS 项目并将其复制到 KMM 项目中的 jsApp 使其工作(与 iosApp 等并行)最小值 jsApp/build.gradle.kts似乎是:

plugins {
    kotlin("js")
}

dependencies {
    implementation(project(":shared"))
}

kotlin {
    js() {
        browser {
        }
    }
}

shared/build.gradle.kts 中,我需要将以下代码片段添加到 kotlin 部分(与 android()ios{...}

平行
    js {
        browser {     
        }
    }

我花了比预期更长的时间的陷阱:

  • build.gradle.kts 中忘记 .kts 和奇妙的错误消息
  • 因为 jsApp build.gradle.kts 现在是嵌套的,所以 kotlin 插件显然不能有 version(猜测这对一致性有意义)。
  • index.html 中的 js 源文件名需要与模块名称匹配(jsApp 在我的例子中)。
  • 不要忘记include(":jsApp")settings.gradle.kts

推荐步骤:

  • 首先尝试让“网络”模块正常工作
  • 使用基于 gradle 的 运行 配置
  • 只有当web示例项目在新结构下运行时,才连接共享代码