【问题标题】:Gradle doesn't emit kotlin.jsGradle 不会发出 kotlin.js
【发布时间】:2019-05-04 02:12:08
【问题描述】:

我正在尝试将我的 Kotlin 应用程序和一组 Kotlin 库编译为 JavaScript。我运行得很好,但是当我尝试运行它时找不到kotlin.js

那么这里发生了什么?当我使用 IDEA(而不是 Gradle)编译时,它输出 kotlin.js 就好了。我试着让我的构建脚本更像我发现的一个例子,but that wouldn't compile...


这里是相关代码和项目的链接:https://github.com/BlueHuskyStudios/Decision-Cruncher/blob/SO/q/53582651/1/build.gradle

【问题讨论】:

  • 请在任何不赞成票的同时附上评论,让我知道为什么我的问题显示没有研究努力、不清楚或没有用处。这样我以后可以写出更好的问题???
  • 你读过这个文档吗:Using Gradle
  • 看来您已经找到了解决方案。
  • @bashor 你为什么这么说?
  • @AlexandreG 这几个月来我一直都想不起来,但我似乎记得把石板擦干净(我经常这样做,因为我不想再处理问题了,而且这经常令人不安)。卸载 IDEA 并删除所有非代码文件,然后重新安装 IDEA 并从这些源创建一个新项目。也许同样适用于你!

标签: gradle kotlin build.gradle kotlin-js


【解决方案1】:

这只对我有用。 unzip 由于某种原因无法正常工作

task assembleWeb() {
    configurations.implementation.setCanBeResolved(true)
    configurations.implementation.each { File file ->
        if (file.path.indexOf('kotlin-stdlib-js') >= 0) {
            exec {
                workingDir "$projectDir/web"
                standardOutput = new ByteArrayOutputStream()
                commandLine "7z", "e", file.absolutePath, "kotlin.js", "-aos", "-r"
            }
        }
    }
    dependsOn classes
}

assemble.dependsOn assembleWeb

注意"-aos" 参数。此标志将防止覆盖现有文件

【讨论】:

    【解决方案2】:

    对于任何其他在未来挣扎的人,我遇到了以下问题:

    IntelliJ Kotlin/JS starter 项目已在 gradle 文件中生成:

    implementation "org.jetbrains.kotlin:kotlin-stdlib-js"

    需要这个才能获得kotlin.js 文件

    compile "org.jetbrains.kotlin:kotlin-stdlib-js"

    【讨论】:

      【解决方案3】:

      Here你可以找到代码 sn-p 从 Kotlin/JS 库中提取所有 .js 文件:

      task assembleWeb(type: Sync) {
          configurations.compile.each { File file ->
              from(zipTree(file.absolutePath), {
                  includeEmptyDirs = false
                  include { fileTreeElement ->
                      def path = fileTreeElement.path
                      path.endsWith(".js") && (path.startsWith("META-INF/resources/") || 
                          !path.startsWith("META-INF/"))
                  }
              })
          }
          from compileKotlin2Js.destinationDir
          into "${projectDir}/web"
      
          dependsOn classes
      }
      
      assemble.dependsOn assembleWeb
      

      【讨论】:

      猜你喜欢
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 2017-03-18
      相关资源
      最近更新 更多