如何才能运行Scala .js 1.3.0教程的第2部分?

问题描述

将项目移至C上的本地文件系统后:现在,我得到了

sbt:Scala.js Tutorial> run
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[info] Compiling 1 Scala source to C:\Users\ERIC\Documents\git\scalajs-tutorial\target\scala-2.13\classes ...
[info] Fast optimizing C:\Users\ERIC\Documents\git\scalajs-tutorial\target\scala-2.13\scala-js-tutorial-fastopt
[info] Running tutorial.webapp.TutorialApp. Hit any key to interrupt.
internal/modules/cjs/loader.js:834
  throw err;
  ^

Error: Cannot find module 'jsdom'
Require stack:
- C:\Users\ERIC\Documents\git\scalajs-tutorial\[stdin]
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:831:15)
    at Function.Module._load (internal/modules/cjs/loader.js:687:27)
    at Module.require (internal/modules/cjs/loader.js:903:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at codeWithJSDOMContext.js:3:15
    at codeWithJSDOMContext.js:52:3
    at Script.runInThisContext (vm.js:120:18)
    at Object.runInThisContext (vm.js:309:38)
    at [stdin]:2:29
    at Script.runInThisContext (vm.js:120:18) {
  code: 'MODULE_NOT_FOUND',requireStack: [ 'C:\\Users\\ERIC\\Documents\\git\\scalajs-tutorial\\[stdin]' ]
}
[error] org.scalajs.jsenv.ExternalJSRun$NonZeroExitException: exited with code 1
[error]         at org.scalajs.jsenv.ExternalJSRun$$anon$1.run(ExternalJSRun.scala:186)
[error] stack trace is suppressed; run last Compile / run for the full output
[error] (Compile / run) org.scalajs.jsenv.ExternalJSRun$NonZeroExitException: exited with code 1
[error] Total time: 6 s,completed Oct. 16,2020,9:53:33 a.m.

sbt:Scala.js Tutorial> evicted
[warn] Found version conflict(s) in library dependencies; some are SUSPECTed to be binary incompatible:
[warn]  * org.scala-js:scalajs-library_2.13:1.3.0 is selected over 1.0.0
[warn]      +- scala-js-tutorial:scala-js-tutorial_sjs1_2.13:0.1.0-SNAPSHOT (depends on 1.3.0)
[warn]      +- org.scala-js:scalajs-dom_sjs1_2.13:1.1.0           (depends on 1.0.0)
[success] Total time: 0 s,10:18:13 a.m.

已使用(https://github.com/scala-js/scalajs-tutorial)上的教程对Scala.js 1.3.0进行了测试。

解决方法

这有点埋头,但是仓库中的tutorial链接提到您需要单独安装jsdom:

这将使用jsdom库在Node.js中模拟DOM。请注意,您需要使用

单独安装
class ViewPagerAdapter(fragmentActivity: FragmentActivity) :
    FragmentStateAdapter(fragmentActivity) {

    private var currentOffset = 0L
    private var nextOffset = itemCount.toLong()

    init {
        val adapterDataObserver = object : AdapterDataObserver() {

            override fun onChanged() {
                currentOffset = nextOffset; nextOffset += itemCount
            }
        }

        registerAdapterDataObserver(adapterDataObserver)
    }

    override fun createFragment(position: Int): Fragment {
        return PageFragment.newInstance(position)
    }

    override fun getItemCount(): Int {
        return 5
    }

    override fun getItemId(position: Int): Long {
        return currentOffset + position
    }

    override fun containsItem(itemId: Long): Boolean {
        return itemId >= currentOffset && itemId < (currentOffset + itemCount)
    }
}

重新加载后,您可以调用成功运行