协同工作,但IntelliJ显示错误

时间:2018-05-23 12:26:47

标签: intellij-idea kotlin kotlinx.coroutines kotlin-js

我正在使用 kotlinjs nodejs 开展一个项目,我开始学习 coroutines 并将它们集成到我的代码中,告别回调地狱。

我设法让协程正常工作,我的代码可以编译和执行,一切似乎都很好

...除了: IDE仍然显示错误 。我为了让协同程序运行而添加的其他库似乎感到困惑。

我目前正在摆弄库依赖项,有时一些错误会消失,但是之后一些代码变红了,之前没问题......

这就是我所看到的:

案例1:

module dependencies in the first case code in the first case

  

无法访问类' kotlinx.coroutines.experimental.CoroutineContext'。检查模块类路径中是否存在缺失或冲突的依赖项

案例2:

module dependencies in the second case code in the second case

  

未解决的参考:JsModule

     

修饰符'外部'不适用于' class'

您看,我添加launch时会识别stdlib,但IDE会抱怨其他两个错误。

再次请注意:在这两种情况下,实际编译都是成功的!

我使用 IntelliJ 2018.1 Kotlin插件1.2.41

1 个答案:

答案 0 :(得分:0)

感谢 youtrack.jetbrains 上的 Alexander Chernikov ,我可以解决我的问题。

我引用他的解释:

  

问题是JavaScript库应该标记有特殊属性才能被识别。   从pom.xmlbuild.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

我还附上了一个带有问题的示例项目。