引用一个不存在的 class java.io.File

Referring to a non-existent class java.io.File

这个问题看起来与Linker error in ScalaJS: "Referring to non-existent class"基本相同,但在细节上似乎有所不同。我没有在 build.sbt.

中指定 JVM 版本

我正在尝试使用 scala.io.Source 或 java.io.File 访问我的 scalajs 应用程序中的文件。一旦我尝试使用其中任何一个,我都会收到 link fail:

...
[info] Fast optimizing C:\Users\Tim\Documents\GitHub\binpack\target\scala-2.11\binpack-fastopt.js
[error] Referring to non-existent class java.io.File
[error]   called from client.jsClient$.onFileChosen(japgolly.scalajs.react.SyntheticEvent)scala.Function0
...

有没有一种方法可以诊断这里发生了什么?我假设问题不是特定于 java.io.File,但不知道下一步是什么。

这是 scala 2.11.8,带有 sbt 0.13.7。

java.io.File 不可移植到 Scala.js,因为它专门绑定到 JVM。有关详细信息,请参阅 http://www.lihaoyi.com/hands-on-scala-js/#PortingJavaAPIs(只需滚动到最底部)。

因此,如果您想在 Scala.js 中执行文件系统 IO,您将需要使用专门为 JavaScript 实施的解决方案,例如 io.js。这是一个例子:http://bchazalet.github.io/2015/07/20/scalajs-electron-skeleton-part-2/