在开发普通JVM应用程序时使用sbt run
运行应用程序时,我可以使用run <args>
传递命令行参数。当我尝试使用Scala.js时,我得到一个错误&#34;没有有效的解析器&#34;。在尝试像runMain
这样的runMain Main.main arg
变体时,错误是&#34;预期的非空白字符&#34;,箭头指向Main.main后面。
在从SBT运行Scala.js / Node.js应用程序时,是否有某种方法可以将参数传递给它?
(我使用的是Scala.js 0.6.15)。
答案 0 :(得分:2)
不,没有,因为JavaScript没有命令行参数的概念。 Node.js可以,但只有从命令行启动,并且sbt插件不支持该用例,我担心。
随意提交功能请求。我不确定它是否可以适应,但我们最终可以调查它。
答案 1 :(得分:0)
可以定义一个调用node.js
的自定义任务,并使用SBT解析器解析参数。将其添加到build.sbt:
import complete.DefaultParsers._
lazy val runa = inputKey[Unit]("Run app with arguments")
runa := {
(fastOptJS in Compile).value // build it first
val args: Seq[String] = spaceDelimited("<arg>").parsed
val npmRun = "node index.js" + args.map("\"" + _ + "\"").mkString(" "," ","")
npmRun.!
}
您还需要在项目根目录中创建一个文件index.js
,其中包含以下内容:
require("./target/scala-2.12/xxxx-jsdeps.js");
require("./target/scala-2.12/xxxx-fastopt.js");