Skip to content

A minimal setup fails with Scala 3 #1081

@Jake6329

Description

@Jake6329

I'm new to scalajs-react, and I've set up a minimal project. It works well with Scala 2.13.10 but it fails with Scala 3.2.1 (3.1.3 also shows the same error). When I run the command sbt "Compile / fastOptJS / webpack" in order to bundle my app, I get this error messages:

...
[info] Writing scalajs.webpack.config.js
[info] Bundling the application with its NPM dependencies
[error] /Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-map-generator.js:298
[error]       throw new Error('Invalid mapping: ' + JSON.stringify({
[error]       ^
[error] Error: Invalid mapping: {"generated":{"line":13410,"column":89},"source":"webpack://https:/raw.githubusercontent.com/japgolly/scalajs-react/v2.1.1/coreGeneric/src/main/scala/japgolly/scalajs/react/ReactCaughtError.scala","original":{"line":12,"column":-1},"name":null}
[error]     at SourceMapGenerator.SourceMapGenerator_validateMapping [as _validateMapping] (/Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-map-generator.js:298:13)
[error]     at SourceMapGenerator.SourceMapGenerator_addMapping [as addMapping] (/Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-map-generator.js:110:12)
[error]     at /Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-node.js:351:13
[error]     at SourceNode.SourceNode_walk [as walk] (/Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-node.js:230:9)
[error]     at SourceNode.SourceNode_walk [as walk] (/Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-node.js:226:13)
[error]     at SourceNode.SourceNode_walk [as walk] (/Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-node.js:226:13)
[error]     at SourceNode.SourceNode_walk [as walk] (/Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-node.js:226:13)
[error]     at SourceNode.SourceNode_walk [as walk] (/Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-node.js:226:13)
[error]     at SourceNode.SourceNode_toStringWithSourceMap [as toStringWithSourceMap] (/Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/source-map/lib/source-node.js:342:8)
[error]     at exports.getSourceAndMap (/Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/webpack-sources/lib/helpers.js:20:41)
[error] Node.js v19.4.0
[error] Failure on parsing the output of webpack: No content to map due to end-of-input
[error]  at [Source: (ProcessPipeInputStream); line: 1, column: 0]
[error] You can try to manually execute the command
[error] node /Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/node_modules/webpack/bin/webpack --profile --json --config /Users/jakelim/demos/electron/my-scalajs-app/target/scala-3.2.1/scalajs-bundler/main/scalajs.webpack.config.js
[error] 
[error] java.lang.RuntimeException: Non-zero exit code: 1
[error] 	at scala.sys.package$.error(package.scala:30)
[error] 	at scalajsbundler.Webpack$.$anonfun$run$2(Webpack.scala:286)
[error] 	at scala.util.Either.fold(Either.scala:192)
[error] 	at scalajsbundler.Webpack$.run(Webpack.scala:286)
[error] 	at scalajsbundler.Webpack$.bundle(Webpack.scala:170)
[error] 	at scalajsbundler.sbtplugin.WebpackTasks$.$anonfun$webpack$2(WebpackTasks.scala:54)
[error] 	at sbt.util.FileFunction$.$anonfun$cached$1(FileFunction.scala:80)
[error] 	at sbt.util.FileFunction$.$anonfun$cached$4(FileFunction.scala:153)
[error] 	at sbt.util.Difference.apply(Tracked.scala:414)
[error] 	at sbt.util.Difference.apply(Tracked.scala:394)
[error] 	at sbt.util.FileFunction$.$anonfun$cached$3(FileFunction.scala:149)
[error] 	at sbt.util.Difference.apply(Tracked.scala:414)
[error] 	at sbt.util.Difference.apply(Tracked.scala:389)
[error] 	at sbt.util.FileFunction$.$anonfun$cached$2(FileFunction.scala:148)
[error] 	at scalajsbundler.sbtplugin.WebpackTasks$.$anonfun$webpack$1(WebpackTasks.scala:57)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] 	at java.base/java.lang.Thread.run(Thread.java:829)
[error] (Compile / fastOptJS / webpack) Non-zero exit code: 1
[error] Total time: 11 s, completed Jan 16, 2023, 4:18:53 PM

Here's my build.sbt and the source code:

// project/build.properties
sbt.version=1.7.1

// project/plugins.sbt
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.12.0")
addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.21.1")

// build.sbt
val scala3Version = "3.2.1"

lazy val root = project
  .in(file("."))
  .enablePlugins(ScalaJSPlugin)
  .enablePlugins(ScalaJSBundlerPlugin)
  .settings(
    name := "my-scalajs-app",
    version := "1.0",

    scalaVersion := scala3Version,
    // scalaVersion := "2.13.10",

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

    libraryDependencies += "com.github.japgolly.scalajs-react" %%% "core" % "2.1.1",

    Compile / npmDependencies ++= Seq(
      "react" -> "17.0.2",
      "react-dom" -> "17.0.2",
    ),
  )
// src/main/scala/tutorial/webapp/TutorialApp.scala
package tutorial.webapp

import japgolly.scalajs.react._
import japgolly.scalajs.react.vdom.html_<^._
import org.scalajs.dom

object TutorialApp {
  def main(args: Array[String]): Unit = {
    val Hello = ScalaComponent.builder[Unit]
      .renderStatic(<.div("Hello!"))
      .build

    val mountNode = dom.document.getElementById("content")
    Hello().renderIntoDOM(mountNode)
  }
}

If I switch to Scala 2.13.10, this works well as expected. Anyone any idea about the issue?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions