Chromium 和 Dart:"An error occurred loading file"

Chromium and Dart: "An error occurred loading file"

我正在尝试 运行 来自 Stagehand 的一些 Dart 模板。 'ubersimplewebapp' 应用程序有效。几乎没有什么。我试过其他几个,但他们没有。我目前正在尝试让 'webapp' 工作。在使用 PHPStorm 安装时没有错误。当我在 Chromium 浏览器中 运行 它时,我收到以下控制台错误:

GET http://dartorium.loc/packages/browser/dart.js
GET http://dartorium.loc/packages/dartorium/nav_menu.dart
An error occurred loading file: package:dartorium/nav_menu.dart
GET http://dartorium.loc/packages/route_hierarchical/client.dart
An error occurred loading file: package:route_hierarchical/client.dart
GET http://dartorium.loc/packages/dartorium/reverser.dart
An error occurred loading file: package:dartorium/reverser.dart

这是 pubspec.yaml 文件:

name: 'dartorium'
version: 0.0.1
description: >
  A minimal web app for the developer that doesn’t want to be confused by too
  much going on.
#author: <your name> <email@example.com>
#homepage: https://www.example.com
environment:
  sdk: '>=1.0.0 <2.0.0'
dependencies:
  browser: any
  sass: '>=0.4.0 <0.5.0'
  script_inliner: '>=1.0.0 <2.0.0'
  route_hierarchical: '>=0.5.0 <0.7.0'
transformers:
- script_inliner
#- sass:
#    style: compressed

这是安装 PHPStorm 生成的模板的日志:

Working dir: /Volumes/Data/htdocs/dartorium
/usr/local/opt/dart/libexec/bin/pub get
Resolving dependencies...
+ analyzer 0.22.4 (0.24.0 available)
+ args 0.12.2+6
+ barback 0.15.2+4
+ browser 0.10.0+2
+ cli_util 0.0.1+1
+ code_transformers 0.2.5
+ collection 1.1.0
+ csslib 0.11.0+4
+ html5lib 0.12.0
+ logging 0.9.3
+ path 1.3.3
+ pool 1.0.1
+ route_hierarchical 0.6.1+1
+ sass 0.4.2
+ script_inliner 1.0.0
+ source_maps 0.10.0+1
+ source_span 1.0.3
+ stack_trace 1.2.1
+ utf 0.9.0+2
+ watcher 0.9.4
+ when 0.2.0
+ which 0.1.3
Changed 22 dependencies!
Precompiling dependencies...
Loading source assets...
Loading script_inliner transformers...
Precompiled script_inliner.
Process finished with exit code 0

目录快照

我的虚拟主机条目以防万一:

<VirtualHost *:80>
    ServerName dartorium.loc
    DocumentRoot "/Volumes/Data/htdocs/dartorium/web"
  <directory /Volumes/Data/htdocs/dartorium>
    Allow from all
    Options -MultiViews
    Require all granted
  </directory>
</VirtualHost>

更新

我决定尝试在 PHPStorm 之外创建应用程序。我删除了该应用程序并在终端中执行 'stagehand webapp' 以再次安装它,然后 'pub get'。我仍然遇到同样的错误。

然后我注意到输出中有一条评论说要 'pub serve' 然后连接到 localhost:8080 上的站点。当我这样做时,应用 运行 正常。所以现在我的问题是你如何 运行 使用 Apache 的应用程序?

回答

Günter Zöchbauer 在下面给出的公认答案解决了这个问题。除了那里描述的内容外,我还进行了另外两项更改。在代码发生任何变化后,我 运行 'pub build'。我对使用 RubyMine 在 PHP 和 RoR 中工作感到厌烦,我所要做的就是刷新浏览器。另一个变化是我的虚拟主机条目。现在设置为:

<VirtualHost *:80>
    ServerName dartorium.loc
    DocumentRoot "/Volumes/Data/htdocs/dartorium/build/web"
</VirtualHost>

在开始此 post 之前,我最初添加了权限来解决我遇到的一些访问问题。事实证明他们没有必要。该条目现在指向 build/web 而不是您工作的 Web 目录。

您需要 运行 pub build 生成 JavaScript 输出(在 build/web 中)。此构建输出可由 apache 提供。

构建输出在 Chrome 中工作正常,无需更改。为了让它在 Dartium 中工作,我更改了脚本标签:

<script src="main.dart.js"></script>
<!--<script type="application/dart" src="main.dart"></script> -->
<!--<script data-pub-inline src="packages/browser/dart.js"></script>-->