在另一个问题中,有人建议我使用ScalaJS 捆绑器来导入 NPM 依赖项。
我想在一个简单的仅限客户端的 Web 应用程序中使用一些 Javascript NPM 包。有一个名为 static 的示例显示了这一点。我对示例的更改:
添加到 build.sbt:
npmDependencies in Compile += "esprima" -> "3.1.3"
添加到 Main.scala:
import Esprima._
import JsonToString._
val code = "answer = 42"
val tokens = tokenize(code)
val tokensStr = tokens.json
改变Main.scala
:"This is bold"
变成s"This is bold $tokensStr"
Facade(有点简化,完整版本见GitHub):
import scala.scalajs.js
import scala.scalajs.js.annotation.JSName
@JSName("esprima")
@js.native
object Esprima extends js.Object {
def tokenize(input: String, config: js.Any = js.native, delegate: String => String = js.native): js.Array[js.Any] = js.native
def parse(input: String, config: js.Any = js.native): js.Dynamic = js.native
}
运行时生成的 htmlfastOptJS::webpack
错误为:
未捕获的类型错误:无法读取未定义的属性“tokenize”
使用了检查static-fastopt-bundle.js
节目esprima
,但没有捆绑它的js。
将依赖项添加到仅限客户端的网页中还需要哪些其他步骤?