Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ScalaJS和MongoDB驱动程序:指不存在的类_Mongodb_Scala_Sbt_Scala.js - Fatal编程技术网

ScalaJS和MongoDB驱动程序:指不存在的类

ScalaJS和MongoDB驱动程序:指不存在的类,mongodb,scala,sbt,scala.js,Mongodb,Scala,Sbt,Scala.js,从昨天开始学习Scala,我构建了一个项目来与MongoDB索引(工作正常)交互,另一个项目使用ScalaJS来做同样的事情 这是我的build.sbt: enablePlugins(ScalaJSPlugin) name := "demographics" version := "1.0" scalaVersion := "2.12.1" libraryDependencies += "org.mongodb.scala" %% "mongo-scala-driver" % "1.2.

从昨天开始学习Scala,我构建了一个项目来与MongoDB索引(工作正常)交互,另一个项目使用ScalaJS来做同样的事情

这是我的build.sbt:

enablePlugins(ScalaJSPlugin)

name := "demographics"

version := "1.0"

scalaVersion := "2.12.1"

libraryDependencies += "org.mongodb.scala" %% "mongo-scala-driver" % "1.2.1"

libraryDependencies += "be.doeraene" %%% "scalajs-jquery" % "0.9.1"
libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "0.9.1"

skip in packageJSDependencies := false
jsDependencies +=
  "org.webjars" % "jquery" % "3.1.1" / "3.1.1/jquery.js"
和我的主文件:

package demographics.webapp

import org.mongodb.scala._
import scala.scalajs.js.JSApp

object DemographicsApp extends JSApp {
  def main(): Unit = {
    // connect to the bdd
    val mongoClient: MongoClient = MongoClient()
    val database: MongoDatabase = mongoClient.getDatabase("demographics")
    val collection: MongoCollection[Document] = database.getCollection("demographics")
  }
}
非常基本:只需连接到集合

遗憾的是,当我在sbt shell上启动“fastOptJS”时,出现了以下错误:

[info] Compiling 1 Scala source to C:\...\target\scala-2.12\classes...
[info] Fast optimizing C:\...\target\scala-2.12\untitled1-fastopt.js
[error] Referring to non-existent class org.mongodb.scala.bson.DefaultHelper$DefaultsTo$
[error]   called from demographics.webapp.DemographicsApp$.main()scala.Unit
[error]   called from scala.scalajs.js.JSApp.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.PrenomApp$.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.DemographicsApp$.main
[error]   exported to JavaScript with @JSExport
[error] involving instantiated classes:
[error]   demographics.webapp.PrenomApp$
[error] Referring to non-existent class org.mongodb.scala.MongoClient$
[error]   called from demographics.webapp.DemographicsApp$.main()scala.Unit
[error]   called from scala.scalajs.js.JSApp.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.PrenomApp$.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.DemographicsApp$.main
[error]   exported to JavaScript with @JSExport
[error] involving instantiated classes:
[error]   demographics.webapp.DemographicsApp$
[error] Referring to non-existent class org.mongodb.scala.bson.collection.immutable.Document
[error]   called from demographics.webapp.DemographicsApp$.main()scala.Unit
[error]   called from scala.scalajs.js.JSApp.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.PrenomApp$.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.DemographicsApp$.main
[error]   exported to JavaScript with @JSExport
[error] involving instantiated classes:
[error]   demographics.webapp.DemographicsApp$
[error] Referring to non-existent method org.mongodb.scala.bson.DefaultHelper$DefaultsTo$.$default()org.mongodb.scala.bson.DefaultHelper$DefaultsTo
[error]   called from demographics.webapp.DemographicsApp$.main()scala.Unit
[error]   called from scala.scalajs.js.JSApp.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.PrenomApp$.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.DemographicsApp$.main
[error]   exported to JavaScript with @JSExport
[error] involving instantiated classes:
[error]   demographics.webapp.DemographicsApp$
[error] Referring to non-existent method org.mongodb.scala.MongoClient$.apply()org.mongodb.scala.MongoClient
[error]   called from demographics.webapp.DemographicsApp$.main()scala.Unit
[error]   called from scala.scalajs.js.JSApp.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.PrenomApp$.$$js$exported$meth$main()java.lang.Object
[error]   called from demographics.webapp.DemographicsApp$.main
[error]   exported to JavaScript with @JSExport
[error] involving instantiated classes:
[error]   demographics.webapp.DemographicsApp$
[trace] Stack trace suppressed: run last compile:fastOptJS for the full output.
[error] (compile:fastOptJS) There were linking errors

相同的代码(主文件中有修改)正在处理vanilla Scala项目,为什么会出现此错误?

之所以出现此错误,是因为您使用的是仅限于JVM的库<代码>mongo scala驱动程序未针对scala.js发布。实际上,您可以使用
%%
依赖关系来依赖于该库的Scala.js版本,该版本可以与Scala.js一起使用。但是不能在Scala.js项目中使用仅限于JVM的库

(相反,您不能在Scala/JVM项目中使用Scala.js-only库,例如,
scalajs-dom