如何在 IDEA 的 Dartium 浏览器中正确 运行 Angular2 dart 应用程序?

How to correctly run Angular2 dart application in Dartium browser from IDEA?

如何在Dartium中正确打开Dart应用?

我正在做 this Angular2-Dart 教程。

要获得工作应用程序,我可以 运行 pub build 命令,然后在 build/web 目录上启动 http 服务器,应用程序将正常工作。

此外,我可以运行 pub serve命令,然后在浏览器中打开localhost:8080地址,等待Dart编译一段时间,应用程序也可以运行。

如何在Dartium中正确运行应用?我要在 IDEA 中找到 web/index.html 文件,按 Alt + F2(打开变体以打开应用程序)并按 dartium。我现在看不到工作应用程序。我只看到 Loading... 消息(因为我的 html 是 <my-app>Loading...</my-app>)。

我看到了这个window

另外,在开发 Dart 应用程序时使用 Dartium 网络浏览器有什么好处?例如,pub serve 在每次页面刷新时重新编译 Dart 代码。这真的需要很多时间。也许我不会花那么多时间用 Dartium 进行编译?

一种方法,我可以正确打开我的 Dart 应用程序是 dartium 是:

  1. web 目录中设置 http 服务器(index.html 文件在此处)。
  2. 运行 此服务器(例如在 8086 端口 0
  3. 在 dartium 中打开 localhost:8086

一段时间后应用程序被正确打开。可能是我的intellij想法有问题?

更新:

当我尝试用 Dartium 打开 index.html 时,我在 IDEA 的 pub serve 选项卡中得到了这个:

C:\tools\dart-sdk\bin\pub.bat serve web --port=53852
Loading source assets...
Loading angular2 and dart_to_js_script_rewriter transformers...
Serving ng2_hero_app web on http://localhost:53852
[web] GET index.html => (cached) ng2_hero_app|web/index.html
[web] GET Served 9 cached assets.
Build completed successfully
[web] GET Served 2 cached assets.
[web] GET Served 3 cached assets.
[web] GET packages/angular2/src/core/metadata.dart => (cached) angular2|lib/src/core/metadata.dart
[web] GET packages/angular2/src/core/util.dart => (cached) angular2|lib/src/core/util.dart
[web] GET packages/angular2/src/core/di.dart => (cached) angular2|lib/src/core/di.dart
[web] GET packages/angular2/src/facade/facade.dart => (cached) angular2|lib/src/facade/facade.dart
[web] GET packages/angular2/src/core/application_ref.dart => (cached) angular2|lib/src/core/application_ref.dart
[web] GET packages/angular2/src/core/application_tokens.dart => (cached) angular2|lib/src/core/application_tokens.dart
[web] GET packages/angular2/src/core/zone.dart => (cached) angular2|lib/src/core/zone.dart
[web] GET packages/angular2/src/core/render.dart => (cached) angular2|lib/src/core/render.dart
[web] GET packages/angular2/src/core/linker.dart => (cached) angular2|lib/src/core/linker.dart
[web] GET packages/angular2/src/core/debug/debug_node.dart => (cached) angular2|lib/src/core/debug/debug_node.dart
[web] GET packages/angular2/src/core/testability/testability.dart => (cached) angular2|lib/src/core/testability/testability.dart
[web] GET packages/angular2/src/core/change_detection.dart => (cached) angular2|lib/src/core/change_detection.dart
[web] GET packages/angular2/src/core/platform_directives_and_pipes.dart => (cached) angular2|lib/src/core/platform_directives_and_pipes.dart
[web] GET packages/angular2/src/core/platform_common_providers.dart => (cached) angular2|lib/src/core/platform_common_providers.dart
[web] GET packages/angular2/src/core/application_common_providers.dart => (cached) angular2|lib/src/core/application_common_providers.dart
[web] GET packages/angular2/src/core/reflection/reflector.dart => (cached) angular2|lib/src/core/reflection/reflector.dart
[web] GET packages/angular2/src/core/reflection/types.dart => (cached) angular2|lib/src/core/reflection/types.dart
[web] GET packages/angular2/src/core/reflection/platform_reflection_capabilities.dart => (cached) angular2|lib/src/core/reflection/platform_reflection_capabilities.dart
[web] GET packages/angular2/src/facade/lang.ngfactory.dart => (cached) angular2|lib/src/facade/lang.ngfactory.dart
[web] GET packages/angular2/src/platform/browser_common.ngfactory.dart => (cached) angular2|lib/src/platform/browser_common.ngfactory.dart
[web] GET packages/angular2/core.ngfactory.dart => (cached) angular2|lib/core.ngfactory.dart
[web] GET packages/angular2/src/core/angular_entrypoint.ngfactory.dart => (cached) angular2|lib/src/core/angular_entrypoint.ngfactory.dart
[web] GET packages/angular2/src/facade/collection.dart => (cached) angular2|lib/src/facade/collection.dart
[web] GET packages/angular2/src/core/change_detection/change_detection.dart => (cached) angular2|lib/src/core/change_detection/change_detection.dart
[web] GET packages/angular2/src/core/metadata/di.dart => (cached) angular2|lib/src/core/metadata/di.dart
[web] GET Served 2 cached assets.

我在 Dartium 中看到了这个:

当我尝试用 Chrome 打开 index.html 时收到此文本:

    C:\tools\dart-sdk\bin\pub.bat serve web --port=54019
Loading source assets...
Loading angular2 and dart_to_js_script_rewriter transformers...
Serving ng2_hero_app web on http://localhost:54019
[web] GET index.html => (cached) ng2_hero_app|web/index.html
[web] GET Served 3 cached assets.
Build completed successfully

这是照片:

运行 并在 Dartium

中调试

在 IDEA(或 WebStorm)中,您只需右键单击 web/index.html 和 select Run (index.html) Debug (index.html) 而 IDEA 应该

  • 开始pub serve
  • 启动 Dartium
  • 加载index.html

我不知道 Alt + F2 有什么作用,因为有各种键盘快捷键设置。

运行 在 Chrome、Firefox、Safari、...

您还应该能够将 URL 从 Dartium 复制到 Chrome 或其他浏览器,并且 pub serve 服务于 Dart-to-JavaScript 转译的应用程序。这比 pub build 更有效,因为它不需要在修改源代码后重建整个应用程序。它可以重用代码未更改的缓存部分,因此速度更快。

已知问题

最近有一个 IDEA(和 WebStorm)问题导致了与您描述的行为类似的行为。请检查您是否有最新的 IDEA 版本。

我用的是IntelliJ IDEA 2016.3,右击web/index.html还是没有Run/Debug。我的项目被识别为 Dart 项目(查看时显示 Pub 操作 pubspec.yaml)。

当我在浏览器中打开|Dartium 时会发生两件事:

1)问题描述

Dartium 打开 url http://localhost:63342/enighet_register/web/index.html?_ijt=kg22cgo907ps6ivcv3sm5dmvt1 which displays forever loading because as the console log shows as Dartium is unable to find the other resources from the web directory (e.g. requested via http://localhost:63342/main.dart ). If you compare these two urls you notice that the first one retains the project name and web-directory, while the second one is relative to index.html. This seems to be the source of the problem. (main.dart is available via http://localhost:63342/enighet_register/web/main.dart)

2) 解决方法

在 Dartium 中打开文件也会启动 IntelliJ 中的 Pub Serve-tab(在 Dart Analysis- and Terminal-tab 旁边)。在这里我们得到了这条线: "Serving enighet_register web on http://localhost:39030" 在 Dartium(或其他浏览器)中打开这个 url 工作得很好(端口是动态的,所以每次检查输出)。

虽然不确定是否可以在 IntelliJ 中调试,但是您可以在 Dartium 中设置断点和调试!