问题标签 [playscalajs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala.js - ScalaJS fullLinkJS 错误
几周前,我将我的 Play+ScalaJS 项目从 ScalaJS 0.6.32 升级到了 1.4.0。一切都在开发中运行良好。今天我尝试部署它并因此fullLinkJS
第一次执行。它产生了许多错误:
我查看了源代码中大约十几个引用的行。它们中的大多数都引用了 Play 路由或调用该url
方法。其余的涉及对 jQuery 的调用。
该项目有一个跨平台的子项目。那个做fullLinkJS就好了。还有一个特定于客户端的 ScalaJS 项目。这就是错误发生的地方。
我正在使用 ScalaJS 1.4.0 和 Play 2.6.25。
关于如何进行的建议?
后来,在阅读了@sjrd 的回复后
有问题的代码示例:
window
中定义org.scalajs.dom
为js.Dynamic
。
routes
在我的代码中定义为val routes: js.Dynamic = global.jsRoutes
. js.Dynamic
类型注释是 IntelliJ 推断的。
啊哈! global
被定义scala.scalajs.js
为扩展scala.Dynamic
。但我认为jsRoutes
应该解释为js.Dynamic
. 它是 Play 服务器生成的路由。
看来我需要改变访问这些人的方式。研究,特别是Scala.js GlobalScope。
再后来——修复
我正在记录我在这里所做的事情,以便我可以将 sjrd 的答案标记为“答案”。
如前所述,我的大部分 IR 验证错误都在表格的行上
href
有一个类型String
并且url
是js.Dynamic
但产生一个字符串。我认为这就是问题所在。
然而,修复很简单:添加toString
:
所有其他 IR 验证错误都是具有类似修复的变体。