В another question Мне было рекомендовано использовать ScalaJS bundler для импорта зависимостей NPM.Как использовать scalajs-bundler только с клиентским приложением
Я хотел бы использовать некоторые пакеты Javascript NPM в простом клиентском веб-приложении. Существует an example called 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"
Фасад (немного упрощена, для полной версии см. 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
}
При запуске HTML сгенерированный с fastOptJS::webpack
погрешность составляет:
Uncaught TypeError: Cannot read property 'tokenize' of undefined
Проверка static-fastopt-bundle.js
показывает esprima
используется, но его JS не поставляется.
Какие еще шаги необходимы для добавления зависимостей на веб-страницу только для клиента?
Расспрашивается как [# 105] (https://github.com/scalacenter/scalajs-bundler/issues/105) на 'scalajs-bundler' GitHub. – Suma
Вы также должны включить определение фасада в свой вопрос –