我有一个非常基本的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应用程序中的命令行参数?
Node.js进程参数目前没有被转换为Kotlin的主要函数参数——这是团队所知道的,您可以在"KJS/NodeJS:process.argv[2..]应该被翻译成主函数args";Kotlin YouTrack上的问题。
作为一种变通方法,您可以直接访问process
的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
}