Как исправить «Его зависимость« kotlinx-coroutines-core »не найдена». - PullRequest
3 голосов
/ 07 июня 2019

Я следовал этому руководству, чтобы создать проект kotlin-> js: https://kotlinlang.org/docs/tutorials/javascript/getting-started-gradle/getting-started-with-gradle.html

Далее я следовал этим инструкциям, чтобы использовать сопрограммы в моем коде: https://github.com/kotlin/kotlinx.coroutines/blob/master/README.md#using-in-your-projects

Все было хорошоДо сих пор в коде не отмечены ошибки, и я мог бы создать свое приложение js без каких-либо сообщений об ошибках.Однако мои js-скрипты не работают в браузере, и я получаю вышеупомянутое сообщение об ошибке в консоли браузера.Кто-нибудь из вас знает, что я пропустил или, возможно, настроил неправильно?

Вот мой build.gradle

group 'de.berlin'
version '1.0-SNAPSHOT'

buildscript {
    ext.kotlin_version = '1.3.31'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'kotlin2js'

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
    testCompile "org.jetbrains.kotlin:kotlin-test-js:$kotlin_version"
    compile "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0-M1"
    compile("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.0-M1")
    compile "org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.3.0-M1"
}

compileKotlin2Js.kotlinOptions.sourceMap = true
compileKotlin2Js.kotlinOptions.outputFile = "${projectDir}/web/js/myApp.js"
compileKotlin2Js.kotlinOptions.suppressWarnings = false
compileKotlin2Js.kotlinOptions.verbose = true

build.doLast {
    configurations.compile.each { File file ->
        copy {
            includeEmptyDirs = false

            from zipTree(file.absolutePath)
            into "${projectDir}/web/js/lib"
            include { fileTreeElement ->
                def path = fileTreeElement.path
                path.endsWith(".js") && (path.startsWith("META-INF/resources/") || !path.startsWith("META-INF/"))
            }
        }
    }

    copy {
        includeEmptyDirs = false
        from "${buildDir}/resources/main"
        into "${projectDir}/web"
    }
}

clean.doFirst {
    delete "${projectDir}/web"

}

Все компилируется без каких-либо сообщений об ошибках, но я получаю следующее сообщение об ошибке вконсоль браузера: "" Его зависимость 'kotlinx-coroutines-core' не найдена.Пожалуйста, проверьте, загружен ли 'kotlinx-coroutines-core' до '(имя проекта)'. "

Более детальная проверка показывает, что / web / js / lib содержит только kotlin.js, не должен kotlinx-coroutines-core также там, потому что он является частью блока зависимостей и должен быть скопирован в build.doLast-step? Я также заметил, что файл скомпилированного js содержит следующее:

if (typeof kotlin === 'undefined') {
  throw new Error("Error loading module 'myApp'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'myApp'.");
}
if (typeof this['kotlinx-coroutines-core'] === 'undefined') {
  throw new Error("Error loading module 'myApp'. Its dependency 'kotlinx-coroutines-core' was not found. Please, check whether 'kotlinx-coroutines-core' is loaded prior to 'myApp'.");
}

Почему это так?это ['kotlinx-coroutines-core'], а не kotlinx-coroutines-core (как в строке выше)?

...