问题标签 [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.

0 投票
1 回答
83 浏览

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.domjs.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并且urljs.Dynamic但产生一个字符串。我认为这就是问题所在。

然而,修复很简单:添加toString

所有其他 IR 验证错误都是具有类似修复的变体。