获取 Kotlin/JS 节点进程的命令行参数

Getting command line arguments for Kotlin/JS Node process

我有一个非常基本的 Kotlin/JS 应用程序,通过 Gradle 插件针对 Node.js。我想在执行时读取传递给进程的命令行参数(使用 node build/js/packages/node-so-repro/kotlin/node-so-repro.js myArgument)。

我正在尝试使用以下代码来访问 args 当 运行 程序时的数量:

fun main(args: Array<String>) {
    console.log(args.size)
}

但是,此代码总是 returns 0,即使我添加命令行参数也是如此。

我没有对向导生成的构建文件进行太多更改:

kotlin {
    js {
        nodejs {
            binaries.executable()
        }
    }
}

如果 args 不起作用,我如何在 Kotlin/JS Node 应用程序中访问命令行参数?

Node.js 进程参数当前未被转换为 Kotlin 的主要函数参数——这是团队知道的事情,您可以在 Kotlin 的 YouTrack 上的 "KJS / NodeJS: process.argv[2..] should be translated to main function args" 问题中关注这方面的进展.

作为解决方法,您可以直接访问 processargv,使用切片删除 node 和您的程序路径:

external val process: dynamic

fun main(args: Array<String>) {
    val argv = process.argv.slice(2) as Array<String>;
    println(argv.joinToString("; ")) // prints all arguments semi-colon separated
}