Tuesday 23 May 2017

TypeError: jsdom.createVirtualConsole is not a function

I am trying to build upon the basic Scala.js tutorial and am having this weird error.

There isn't much different from the project set-up as shown in the tutorial, but just in case here's my build.sbt:

enablePlugins(ScalaJSPlugin)

scalaVersion := "2.12.1"

name := "algorithms1_4_34"
version := "1.0"

libraryDependencies ++= Seq("org.scalatest" % "scalatest_2.12" % "3.0.1" % "test",
            "org.scalacheck" %% "scalacheck" % "1.13.4" % "test",
             "org.scala-js" % "scalajs-dom_sjs0.6_2.12" % "0.9.1",
             "be.doeraene" %%% "scalajs-jquery" % "0.9.1")

// This is an application with a main method
scalaJSUseMainModuleInitializer := true

skip in packageJSDependencies := false
jsDependencies +=
  "org.webjars" % "jquery" % "2.1.4" / "2.1.4/jquery.js"
jsDependencies += RuntimeDOM

...and the JSApp file:

package ca.vgorcinschi.algorithms1_4_34

import scala.scalajs.js.JSApp
import org.scalajs.jquery.jQuery

object HotAndColdJS extends JSApp{

   def main(): Unit = {
     jQuery(()=>setupUI())
  }

  def addClickedMessage():Unit ={
    jQuery("body").append("<p>You clicked the button!</p>")
  }

  def setupUI():Unit = {
    //click envokes an event handler
    jQuery("#click-me-button").click(()=> addClickedMessage())
    jQuery("body").append("<p>Hello World!</p>")
  }
}

I can run compile, fastOptJS, reload and eclipse (I am using eclipsePlugin) commands without problems. The only issue is the run command. To be fair I did add something to the flow of the tutorial, but only because running this command (npm install jsdom) from the root of application lead to failure in run as well (npm WARN enoent ENOENT). Following this as advised here I ran:

npm init
npm install
npm install jsdom

And this is where I am now. This is the error I get when running the app with run:

> run
[info] Running ca.vgorcinschi.algorithms1_4_34.HotAndColdJS
[error] [stdin]:40
[error]     virtualConsole: jsdom.createVirtualConsole().sendTo(console),
[error]                           ^
[error] 
[error] TypeError: jsdom.createVirtualConsole is not a function
[error]     at [stdin]:40:27
[error]     at [stdin]:61:3
[error]     at ContextifyScript.Script.runInThisContext (vm.js:23:33)
[error]     at Object.runInThisContext (vm.js:95:38)
[error]     at Object.<anonymous> ([stdin]-wrapper:6:22)
[error]     at Module._compile (module.js:571:32)
[error]     at evalScript (bootstrap_node.js:391:27)
[error]     at Socket.<anonymous> (bootstrap_node.js:188:13)
[error]     at emitNone (events.js:91:20)
[error]     at Socket.emit (events.js:188:7)
org.scalajs.jsenv.ExternalJSEnv$NonZeroExitException: Node.js with JSDOM exited with code 1
    at org.scalajs.jsenv.ExternalJSEnv$AbstractExtRunner.waitForVM(ExternalJSEnv.scala:107)
    at org.scalajs.jsenv.ExternalJSEnv$ExtRunner.run(ExternalJSEnv.scala:156)
    at org.scalajs.sbtplugin.ScalaJSPluginInternal$.org$scalajs$sbtplugin$ScalaJSPluginInternal$$jsRun(ScalaJSPluginInternal.scala:697)
    at org.scalajs.sbtplugin.ScalaJSPluginInternal$$anonfun$73$$anonfun$apply$48$$anonfun$apply$49.apply(ScalaJSPluginInternal.scala:814)
    at org.scalajs.sbtplugin.ScalaJSPluginInternal$$anonfun$73$$anonfun$apply$48$$anonfun$apply$49.apply(ScalaJSPluginInternal.scala:808)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) org.scalajs.jsenv.ExternalJSEnv$NonZeroExitException: Node.js with JSDOM exited with code 1
[error] Total time: 4 s, completed 23-May-2017 9:24:20 PM

I would appreciate if anyone could give me a hand with this.



via vasigorc

No comments:

Post a Comment