2

构建失败并显示错误消息:

./output.js 模块中的错误未找到:错误:无法解析“C:\Users\User\Documents\MultiPlatformTodo\web\web”中的“common”@ ./output.js 340:91-108

./output.js 中的错误未找到模块:错误:无法解析“C:\Users\User\Documents\MultiPlatformTodo\web\web”中的“kotlin”@ ./output.js 340:18-35

./output.js 模块中的错误未找到:错误:无法解析“C:\Users\User\Documents\MultiPlatformTodo\web\web”中的“kotlin-react”@ ./output.js 340:37-60

./output.js 中的错误模块未找到:错误:无法解析“C:\Users\User\Documents\MultiPlatformTodo\web\web”中的“kotlin-react-dom”@ ./output.js 340:62 -89

./output.js 中的错误未找到模块:错误:无法解析“C:\Users\User\Documents\MultiPlatformTodo\web\web”中的“kotlinx-coroutines-core”@ ./output.js 340:110 -144

./output.js 中的错误模块未找到:错误:无法解析“C:\Users\User\Documents\MultiPlatformTodo\web\web”中的“kotlinx-html-js”@ ./output.js 340:146 -172

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务':web:webpack-bundle'执行失败。节点 webpack.js 失败(退出代码 = 2)

js模块build.gradle定义如下:

apply plugin: 'org.jetbrains.kotlin.frontend'
apply plugin: 'kotlin2js'

kotlinFrontend {
    npm {
        dependency("react", "16.6.0")
        dependency("react-dom", "16.6.0")
        dependency("@material-ui/core", "1.4.3")
    }

    sourceMaps = true

    webpackBundle {
        bundleName = "mpnotes"
        contentPath = file('src/main/web')
    }
}

dependencies {
    implementation project(':common')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
    implementation "org.jetbrains.kotlinx:kotlinx-html-js:0.6.11"
    implementation "org.jetbrains:kotlin-react:16.6.0-pre.61-kotlin-1.3.0"
    implementation "org.jetbrains:kotlin-react-dom:16.6.0-pre.61-kotlin-1.3.0"
}

compileKotlin2Js {
    kotlinOptions {
        outputFile = "${projectDir}/web/output.js"
        metaInfo = true
        moduleKind = "commonjs"
        sourceMap = true
    }
}

settings.gradle

enableFeaturePreview('GRADLE_METADATA')

rootProject.name = 'MultiPlatformTodo'
include 'android'
include 'web'
include 'common'

这是common模块的内容:

apply plugin: 'kotlin-multiplatform'

kotlin {
    targets {
        fromPreset(presets.jvm, 'jvm')
        fromPreset(presets.js, 'js')
    }

    sourceSets {
        commonMain {
            dependencies {
                implementation 'org.jetbrains.kotlin:kotlin-stdlib-common'
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutines_version"
            }
        }

        commonTest {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-test-common"
                implementation "org.jetbrains.kotlin:kotlin-test-annotations-common"
            }
        }

        jvmMain {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
            }
        }

        jsMain {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-js:$coroutines_version"
            }
        }
    }
}

kotlin {
    experimental {
        coroutines "enable"
    }
}
4

2 回答 2

1

我看到两个可能的问题。

第一个是kotlin2js您应该使用多平台 gradle 插件,而不是使用多平台 gradle 插件,即kotlin-multiplatform,它是较新的并且将具有更长期的支持,或者kotlin-platform-js,它可能是您当前设置的更简单的替代品。

另一个问题是线路implementation project(':common')。这告诉 gradle 你正在使用公共模块作为 js 依赖项,因为这是一个 js 项目。因为kotlin-platform-js您应该使用expectedBy project(':common')将其链接为通用依赖项。因为kotlin-multiplatform您需要对依赖项配置进行更多更改。你可以在这里看到一些细节

于 2018-12-02T15:38:12.980 回答
1

我知道它有点晚了,但如果你加入apply plugin: 'kotlin-dce-js'build.gradle很高兴

于 2019-01-24T00:42:03.830 回答