Сопрограммы работают, но IntelliJ показывает ошибки

Я работаю над проектом, используя kotlinjs для nodejs, и я начинаю изучать сопрограммы и интегрировать их в свой код, чтобы попрощаться с адом обратных вызовов. .

Мне удалось заставить сопрограммы работать, мой код может быть скомпилирован и выполнен, всё выглядит нормально.

...кроме: IDE по-прежнему показывает ошибки. Кажется, меня смущают дополнительные библиотеки, которые я добавил для запуска сопрограмм.

В настоящее время я возюсь с зависимостями библиотеки, иногда некоторые ошибки исчезают, но затем какой-то код становится красным, что раньше было нормально...

Вот что я вижу:

Случай 1:

зависимости модуля в первом случаекод в первом случае

Не удается получить доступ к классу kotlinx.coroutines.experimental.CoroutineContext. Проверьте путь к классам вашего модуля на наличие отсутствующих или конфликтующих зависимостей.

Случай 2:

зависимости модуля во втором случаекод во втором случае

Нерешенная ссылка: JsModule

Модификатор «внешний» не применим к «классу»

Видите ли, launch распознается, когда я добавляю stdlib, но затем IDE выдает две другие ошибки.

Еще раз обратите внимание: В обоих случаях фактическая компиляция прошла успешно!

Я использую IntelliJ 2018.1 с плагином Kotlin 1.2.41.


person Christoph Berghuber    schedule 23.05.2018    source источник
comment
Похоже на ошибку. Попробуйте использовать версию 2018.2 с сайта jetbrains.com/idea/nextversion. Если ошибка не устранена, сообщите об этом по адресу < href="https://youtrack.jetbrains.com/issues/KT" rel="nofollow noreferrer">youtrack.jetbrains.com/issues/KT с образцом проекта для воспроизведения.   -  person Andrey    schedule 23.05.2018
comment
Спасибо, я пробовал... но то же самое. Я сообщу об этом JetBrains.   -  person Christoph Berghuber    schedule 24.05.2018
comment
Не могли бы вы поделиться своим проектом? И, конечно же, сообщите о проблеме.   -  person bashor    schedule 24.05.2018
comment
Используйте только версию ...-core-js -- удалите вторую библиотеку ...-core. Не используйте kotlin-stdlib для Kotlin/JS, вместо этого используйте kotlin-stdlib-js (это часть KotlinJavaScript)   -  person bashor    schedule 24.05.2018


Ответы (1)


Благодаря Александру Черникову из youtrack.jetbrains я смог решить свою проблему.

Привожу его объяснение:

Проблема в том, что библиотеки JavaScript должны быть отмечены специальным атрибутом для распознавания. Когда они импортируются из pom.xml или build.gradle, эта метка устанавливается, поэтому функция работает. В вашем проекте они не отмечены.

На данный момент, чтобы исправить библиотеки вручную, откройте .idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_js_1_2_41.xml и .idea/libraries/org_jetbrains_kotlinx_kotlinx_coroutines_core_js_0_22_5.xml. В обоих файлах найдите type="repository" и замените его на type="kotlin.js". Убедитесь, что IDEA видит изменения. (Вы можете выйти из IDEA, внести изменения и перезапустить.)

Затем вы можете оставить только эти две библиотеки в зависимостях. Редактор должен работать.

Вот ссылка на выпуск: https://youtrack.jetbrains.com/issue/KT-24575< /а>

Там же я прикрепил пример проекта с проблемой.

person Christoph Berghuber    schedule 25.05.2018