首页 > 解决方案 > 获取 Kotlin/JS 节点进程的命令行参数

问题描述

我有一个非常基本的 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)
}

0但是,即使我添加了命令行参数,这段代码也总是返回。

与向导生成的内容相比,我没有对构建文件进行太多更改:

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

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

标签: node.jskotlinkotlin-js

解决方案


Node.js 进程参数目前没有被翻译成 Kotlin 的主要函数参数——这是团队知道的事情,你可以在“KJS / NodeJS: process.argv[2..] 应该翻译”中关注它的进展Kotlin 的 YouTrack 上的主函数 args问题。

作为一种解决方法,您可以直接访问process's argv,使用 slice 来删除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
}

推荐阅读