我正在尝试使用 IntelliJ IDEA CE 开发环境使用 Kotlin 1.3.11 开发 Nodejs 应用程序。不幸的是,我在运行应用程序方面没有取得任何进展。为了确保一切设置正确,我想打印出一个简单的“hello world”。
我搜索了有关该主题的文章或教程,但没有找到太多关于将这三者结合在一起的文章或教程(Kotlin、IntelliJ、Nodejs)。我发现的最具体的是: a medium post和 another post .
据我(相信)所知,有三个主要步骤:
- 通过 npm 调用初始化 Node 应用程序,并使用 npm 安装 kotlin 和expressjs 等 Node 依赖项
- 创建 build.gradle 来定义其他依赖项和任务
- 创建 IntelliJ IDEA 项目
我尝试以不同的顺序执行这些步骤,但从未出现过正在运行的应用程序。我还搜索了 IntelliJ 的文档,但 Nodejs 集成不是免费社区版的功能。也没有描述如何让 Kotlin 和 Nodejs 一起工作。
这里有人成功地尝试过这样做(或者失败了并且知道为什么它不起作用)?我是否必须使用其他 IDE 或编写自己的构建工具/工具链?
真诚的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 任务 npmInit
和 npmInstall
./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")
})
}
第 4 步:RTFA - 运行应用
运行gradle任务npmRun
./gradlew :npmRun
希望有帮助
注意:
1. 这个模板是从你上面问的中型帖子中拉出来的,并做了一些修改
2. 请记住使用 sudo
运行 gradle 任务(如果您使用的是 Linux)
关于node.js - 使用intellij idea ce在kotlin中编写nodejs应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951483/