написание приложений nodejs в котлине с интеллигентной идеей - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь разработать приложение Nodejs, используя Kotlin 1.3.11, используя среду разработки IntelliJ IDEA CE.К сожалению, я не продвинулся к запуску приложения.Чтобы убедиться, что все настроено правильно, я хочу распечатать простой «привет мир».

Я искал статьи или учебные пособия по этой теме, но я не нашел много о том, как объединить эти три (Kotlin, IntelliJ, Nodejs).Наиболее конкретные из них, которые я нашел: средний пост и другой пост .

Насколько я (думаю) знаю, есть три основных шага:

  • вызов инициализации приложения узла через npm и использование npm для установки зависимостей узла, таких как kotlin и expressjs
  • создание build.gradle для определения других зависимостей и задач
  • создание проекта IntelliJ IDEA

Я пытался выполнять шаги в разных порядках, но никогда не приходил к работающему приложению.Также я искал в документации IntelliJ, но интеграция Nodejs не является функцией бесплатной версии сообщества.Там нет описания, как заставить Kotlin и Nodejs работать вместе.

Кто-нибудь здесь успешно пытался это сделать (или не смог и знает, почему это не сработает)?Нужно ли мне использовать другую IDE или писать свои собственные инструменты для сборки / набор инструментов?

С уважением J.

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Редактировать: В качестве альтернативы, вы можете клонировать https://github.com/miquelbeltran/kotlin-node.js и следовать инструкциям, приведенным в прочтении.

Мне удалось заставить работать сообщение Medium, заменив gradle build со следующим (поскольку пост был опубликован в 2017 году (!) и требует гораздо более старой версии Gradle):

Закомментируйте все содержимое build.gradle примерно так:

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

Запустите эту команду в командной строке: (3.4.1 была последней версией Gradle незадолго до публикации сообщения Medium.)

gradle wrapper --gradle-version=3.4.1

Раскомментировать build.gradle:

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

Запустите эту команду вместо gradle build:

gradlew build

И, наконец, запустите эту команду, как в сообщении: (На момент написания этого ответа в StackOverflow Node.js не понижался, итекущая версия LTS 10.16.0 работает отлично.)

node node/index.js
0 голосов
/ 02 марта 2019

Я не делал этого в IDEA CE, но теоретически это должно работать.

Предварительные условия: у вас установлен узел, вы можете выполнять задачи 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: После синхронизации вашего build.gradle на шаге 1 запустите задачи gradle npmInit и npmInstall

./gradlew :npmInit
./graldew :npmInstall

Шаг 3: Создайте свой файл kotlin (index.kt / main.kt / whatever.kt) в src/main/kotlin и протестируйте приведенный ниже код

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: RT F A - Запустить приложение Запустите задачу gradle npmRun

./gradlew :npmRun

Надеюсь, это поможет

Примечание:1. Этот шаблон был взят из среднего поста, который вы спрашивали выше, и немного изменился2. Не забывайте запускать задачи gradle, используя sudo (если вы используете linux)

...