使用 intellij idea ce 在 kotlin 中编写 nodejs 应用程序

writing nodejs applications in kotlin with intellij idea ce

我正在尝试使用 IntelliJ IDEA CE 开发环境使用 Kotlin 1.3.11 开发 Nodejs 应用程序。不幸的是,我在 运行 申请方面没有取得任何进展。为确保一切设置正确,我想打印一个简单的 "hello world"。

我搜索了有关该主题的文章或教程,但没有找到太多关于将这三者(Kotlin、IntelliJ、Nodejs)结合在一起的信息。我发现的最具体的是: a medium post and another post.

据我(相信)所知,主要分为三个步骤:

我尝试以不同的顺序执行这些步骤,但我从未进入 运行 应用程序。我还搜索了 IntelliJ 的文档,但 Nodejs 集成不是免费社区版的功能。也没有描述如何让 Kotlin 和 Nodejs 一起工作。

这里有没有人成功地尝试过这样做(或者失败了并且知道为什么它不起作用)?我是否必须使用另一个 IDE 或编写自己的构建 tools/toolchain?

此致 J.

我没有在 IDEA CE 中这样做过,但理论上,这应该可行。

先决条件:你已经安装了node,可以执行gradle个任务

这是最低配置,还有综合配置。如果对此感兴趣,请添加评论

第 1 步:
创建一个新的 Kotlin/JS 项目(使用 gradle)并确保您的 gradle构建文件看起来像这样

group 'node-example'
version '1.0-SNAPSHOT'

buildscript {
  ext.kotlin_version = '1.3.11'
    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"
}

compileKotlin2Js.kotlinOptions {
  moduleKind = "commonjs"
  outputFile = "node/index.js"
}

task npmInit(type: Exec) {
  commandLine "npm", "init", "-y"
}

task npmInstall(type: Exec) {
  commandLine "npm", "install", "kotlin", "express", "--save"
}

task npmRun(type: Exec) {
  commandLine "node", "node/index.js"
}

npmRun.dependsOn(build)

步骤 2:
在步骤 1 运行 中同步您的 build.gradle 后 gradle 任务 npmInitnpmInstall

./gradlew :npmInit
./graldew :npmInstall

第 3 步:
src/main/kotlin 中创建您的 kotlin 文件 (index.kt/main.kt/whatever.kt) 并测试下面的代码

external fun require(module:String):dynamic

fun main(args: Array<String>) {
    println("Hello JavaScript!")

    val express = require("express")
    val app = express()

    app.get("/", { req, res ->
        res.type("text/plain")
        res.send("Kotlin/JS is kool")
    })

    app.listen(3000, {
        println("Listening on port 3000")
    })
}

第四步:RTFA - 运行 应用程序
运行 gradle 任务 npm运行

./gradlew :npmRun

希望对您有所帮助

注:
1. 这个模板是从你上面问的post中拉出来的,稍微修改一下
2. 请记住 运行 您的 gradle 任务使用 sudo(如果您使用 linux)

编辑:或者,您可以克隆 https://github.com/miquelbeltran/kotlin-node.js 并按照自述文件中的说明进行操作。

我通过将 gradle build 替换为以下内容(因为 post 于 2017 年发布(!)并且需要更旧版本的Gradle):

像这样注释掉build.gradle的全部内容:

/*group 'node-example'
...
compileKotlin2Js.kotlinOptions {
  moduleKind = "commonjs"
  outputFile = "node/index.js"
}*/

运行 命令提示符中的此命令:(3.4.1 是 Gradle 的最新版本,就在 Medium post 发布之前。)

gradle wrapper --gradle-version=3.4.1

取消注释 build.gradle:

group 'node-example'
...
compileKotlin2Js.kotlinOptions {
  moduleKind = "commonjs"
  outputFile = "node/index.js"
}

运行 这个命令代替 gradle build:

gradlew build

最后 运行 post 中的这个命令:(在 Whosebug 上写这个答案时,Node.js 没有降级,当前的 LTS 版本 10.16.0 有效完美。)

node node/index.js