dart - JS 互操作适用于 DDC,但不适用于 Dart2JS
问题描述
Dart 2.7 build_runner:1.7.3 build_web_compilers:2.9.0
我使用包 js 为 GoJS 创建了一个接口:https ://github.com/jodinathan/gojs_dart/ 问题是它在 DDC 中完美运行,但在与 Dart2JS 一起使用时抛出异常。
这是您可以检查的一个小再现: https ://github.com/jodinathan/gojs_dart/tree/master/example/flowchart
错误似乎在 ..bind(GoJSBinding('text').makeTwoWay()) 行中,我认为它找不到 bind() 函数,但是在 DDC 中可以找到。
关于如何解决这个问题的任何想法?
问题出在 dart-sdk 中:https ://github.com/dart-lang/sdk/issues/40434
解决方案
看起来 dart2js 在所有类上都需要一个外部工厂构造函数,而 dartdevc 不需要。因此,例如,对于今天遇到的第一个错误,您有一个像这样的类:
@JS('Node')
class GoJSNode extends GoJSPart {}
它应该是这样的:
@JS('Node')
class GoJSNode extends GoJSPart {
external factory GoJSNode();
}
推荐阅读
- python - 如何在 django 中显示或渲染多个表单
- python - pydantic.BaseModel:父类的类方法
- java - 使用 Graph API 获取 Intune 合规性策略设置
- java - 尝试在 jRuby 中实现 Java 接口时出现 AbstractMethodError
- java - 在 windows server 2019 上运行 selenium 测试时,基于 Chromium 的浏览器崩溃
- wordpress - Woocommerce rest api 错误说此网站出现严重错误
- clean-architecture - Clean Architecture / Hexagonal I/O 适配器如何分配它们
- mysql - 连接在 phpmyadmin XAMPP 中不起作用
- javascript - 是否可以使用 css 在内容属性内添加链接?
- accordion - jQuery Accordion:当单项手风琴集中时,无法通过箭头键滚动页面