问题标签 [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 验证错误都是具有类似修复的变体。