sbt-scalajs升级至1.0.0后jsDependencies及/方法不存在报错如何解决
sbt-scalajs 1.0.0版本升级配置调整方案
报错原因
两个报错均由sbt-scalajs 1.x版本的架构调整导致:
- 0.6.x版本内置的
jsDependencies配置项及配套的/资源路径指定语法,在1.0+版本中被从核心插件中移除,拆分到独立的sbt-jsdependencies插件中 - 原有配置中的scalajs-dom版本也和sbt-scalajs 1.x不兼容,需要同步升级
具体修改步骤
1. 调整plugins.sbt配置
新增独立的sbt-jsdependencies插件依赖:
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.0.0") addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.0.0") // 新增以下行 addSbtPlugin("org.scala-js" % "sbt-jsdependencies" % "1.0.0")
2. 调整build.sbt配置
修改crossProject的JS端配置,启用JSDependencies插件,同时升级scalajs-dom到适配1.x的版本:
// 已注释的import语句不需要恢复,scalajs-crossproject 1.x已经支持自动导入crossProject val core = crossProject(JSPlatform, JVMPlatform) .in(file("core")) .settings(commonSettings) .settings( name := "sjs-test-error", ) // 新增行:为JS端项目启用JSDependencies插件 .jsEnablePlugins(JSDependenciesPlugin) .jsSettings( libraryDependencies ++= Seq( // 升级scalajs-dom到适配sbt-scalajs 1.x的最低版本 "org.scala-js" %%% "scalajs-dom" % "1.0.0" ), jsDependencies ++= Seq( "org.webjars.npm" % "viz.js" % "1.7.0" / "1.7.0/viz.js" ) )
其余原有配置保持不变即可。
可选替代方案
如果不需要兼容旧的webjars引入方式,也可以使用官方更推荐的sbt-scalajs-bundler插件直接管理npm依赖,无需依赖webjars和jsdependencies插件。
内容的提问来源于stack exchange,提问作者user51
相关产品推荐
相关产品推荐

