在使用sbt run
运行应用程序时,在开发普通JVM应用程序时,我可以使用run <args>
传递命令行参数。当我对Scala.js做同样的尝试时,我会得到一个错误“没有有效的解析器可用”。在尝试runMain
变体(如runMain Main.main arg
)时,错误是“预期的非空格字符”,箭头指向Main.main后面。
在从SBT运行Scala.js / Node.js应用程序时,有什么方法将参数传递给它吗?
(我使用的是Scala.js 0.6.15)。
发布于 2017-03-24 13:09:04
不,没有,因为JavaScript没有命令行参数的概念。Node.js是这样做的,但只有在命令行启动时才会这样做,恐怕sbt插件不支持这个用例。
请随时提交功能请求。我不确定它是否能被接受,但我们最终可以调查它。
发布于 2017-03-30 10:55:12
可以定义调用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");
发布于 2022-06-29 19:03:00
在此期间,出现了一个图书馆来解决以下问题:https://ben.kirw.in/decline/
https://stackoverflow.com/questions/42998773
复制相似问题