【问题标题】:"Run as JavaScript" does not work with my dart web app?“以 JavaScript 方式运行”不适用于我的 dart 网络应用程序?
【发布时间】:2013-12-15 00:24:51
【问题描述】:

我找不到我的应用程序在使用 dart2js 编译为 JavaScript 时无法运行的原因。我曾尝试使用 Google DevTools 调试我编译的 JavaScript 应用程序,但发现很难同时理解调试器和 JavaScript 代码。您可以在 GitHub 上找到我的网络应用程序。我怀疑编译的 JavaScript 代码和导入的第三方 JS 库(如 jquery)之间存在冲突,但不确定。非常感谢您的帮助。

【问题讨论】:

  • github 项目似乎缺少一些文件(如 pubspec.yaml)。我无法运行它。
  • 感谢您抽出宝贵时间查看我的问题。我刚刚将 pubspec.yaml 推送到我的 github 存储库。如果您现在可以运行它或者需要推送其他内容,请告诉我。谢谢。
  • 你试过pub build --mode debug来防止缩小吗?
  • @zoechi 感谢您的评论。通过将 dart.js 脚本行放在 app 脚本行之后,我的问题得到了解决。但是,我以前不知道“pub build”。我试过你的命令,但它抛出“找不到名为“模式”的选项。”

标签: dart dart2js


【解决方案1】:

最简单的可能是在代码中添加一些print 语句。使用二分搜索,应该相对容易找出 VM 和 dart2js 何时分歧。

如果您认为 dart2js 做错了,请报告原因和/或在 http://dartbug.com/ 提交错误。

解决方案(由 OP 报告):“dart.js 应该在 [the] app 脚本行之后”。

【讨论】:

  • 我在 main() 之后添加了一个打印语句。它在 Dart VM 上打印正常,但 dart2js 不会将该语句打印到 FireFox 控制台。我的浏览器似乎看不到编译后的 JS 代码。除了外部导入的 JS 库外,应用程序中没有任何功能。甚至按钮和输入框都不起作用。
  • 尝试让最简单的页面正常工作。删除除 main 中的 print 之外的所有 Dart 代码。在服务器中(或使用 Chrome 开发工具)查看加载了哪些文件。如果不执行打印,我猜 dart.js 不会用 js 脚本标签替换 dart 脚本标签。我还没有测试过,但可能是因为脚本标签在标题中而不是在正文中。这就是我接下来要研究的内容。
  • 谢谢弗洛里安。我发现了问题。 dart.js 应该在我的应用脚本行之后。如果 dart.js 行的位置非常重要,我认为 DartEditor 应该发出警告。在我进行此更改后,VM 开始显示所有动态生成的按钮两次。并且应用程序的 JS 版本没有按预期运行。当 VM 没有时抛出空指针异常。我将在另一个 stackoverflow 问题上发布这些问题。对于这个问题,改变 dart.js 的位置就可以了。再次感谢您的时间和帮助。请添加此解决方案 2 ur answer。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
相关资源
最近更新 更多