【问题标题】:How to run Dartium on Linux?如何在 Linux 上运行 Dartium?
【发布时间】:2015-08-29 20:50:58
【问题描述】:

我是 Dart 新手,想开始为 Dart 开发应用程序。现在,我只是为此使用dart2js --minify,效果很好,但是当我需要通过更改代码、运行代码、更改代码、运行代码等来调试我的错误时,速度真的很慢。这需要大量的编译,所以虽然dart2js 通常相当快,但使用dart2js 调试 Dart Web 应用程序真的很慢。

我想在 Dartium 中使用 Dart VM,并按照this video 的指示下载了它(虽然我承认我没有观看整个视频,因为其中一部分是关于我不使用的 Atom)。但是,当我打开 Dartium(./chrome./chrome-wrapper)时,它看起来与前面的常规 Chrome 没有任何不同。没有--no-sandbox 警告,用户代理与Chromium 中的相同(没有(Dart))。当我尝试使用<script type="application/dart" [...]> 运行 Dart Web 应用程序时,它不起作用。

我在运行 Dartium 时也遇到以下错误(./chrome./chrome-wrapper 上出现同样的错误):

[18997:18997:0829/163445:ERROR:browser_main_loop.cc(163)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
Created new window in existing browser session.
[19044:19044:0829/163446:ERROR:zygote_linux.cc(587)] write: Broken pipe
[0829/163446:ERROR:nacl_helper_linux.cc(282)] NaCl helper process running without a sandbox!
Most likely you need to configure your SUID sandbox correctly

但是,当我转到the link in the error 时,指示指的是一堆我不认识的命令和文件。

有人可以帮我弄清楚如何构建 Dartium 吗?非常感谢!

附加信息:

  • 我运行的是 Ubuntu 15.04,我的默认浏览器是 Chromium。
  • 当我同时运行 ./chrome./chrome-wrapper 时,我关闭了原来的 Chromium。
  • 我已经上传了我的项目to GitHub

【问题讨论】:

  • 当我从没有参数的命令行启动 Dartium 时,我得到了同样的错误信息。我通常从 WebStorm 启动 Dartium,这样的消息是不可见的,但我也从未遇到过与此错误相关的问题。有关更多信息,请参阅我的答案。如果还是不行,请提供更多项目信息(pubspec.yaml,目录结构,源文件内容)
  • 如果你想看我的项目,你可以去here
  • 我看了一眼,一切似乎都很好。看到你接受了我的项目,我假设你已经成功了。不要犹豫,问你是否又被卡住了。

标签: linux ubuntu dart dartium


【解决方案1】:

也许 Dartium 正在连接到现有版本的 Chromium。尝试使用--user-data-dir=/tmp/dartium_dir 启动 Dartium。这将确保它与任何现有 Chromium 分开启动。

【讨论】:

    【解决方案2】:

    我想检查您是否运行 Dartium 的最佳方法是在 URL 栏中输入 about://version 并检查是否列出了 Dart: someversion。我通常从 WebStorm 启动 Dartium,它在 about://version 中列出了以下命令行

    /usr/local/apps/dart/dartium/chrome --no-sandbox --flag-switches-begin --disable-async-dns --enable-devtools-experiments --enable-download-resumption -- javascript-harmony --enable-panels --flag-switches-end

    使用pub build 通常更简单,而不是dart2jspub build 通常仅用于部署。对于开发来说,最好运行 Dart 开发 Web 服务器pub serve。当不支持 Dart 的浏览器请求页面时,Pub serve 会即时构建到 JavaScript。如果 Dartium 请求一个页面,它会提供 Dart 源代码。如果您的源代码发生更改,当您在不支持 Dart 的浏览器中重新加载页面时,您会自动获取更新的 JS。

    (如果使用pub getpub upgrade更改依赖关系,则需要重新启动pub serve

    【讨论】:

    • 谢谢你告诉我pub serve!它现在对我来说效果很好!但是,如果可能的话,我更喜欢使用 Dartium。我尝试了您给我的命令行参数,但没有任何改变。即使我在命令行参数中指定了--no-sandbox,也没有--no-sandbox 警告。我还查看了WebStorm,但它看起来只有 30 天的试用期才能购买,而且我不想只为 Dart 使用另一个 IDE。再次感谢您的帮助!
    • 当我从命令行启动 Dartium 时,我看到它会产生与您的问题相同的错误消息。不过,这似乎不会导致任何进一步的问题。
    • 您也可以将 pub serve 与 Dartium 一起使用。 pub serve 将原始 Dart 源提供给 Dartium,并自动生成 JS 给其他浏览器。 IntelliJ 与 WebStorm 非常相似,如果有帮助,可以使用社区版。一些框架(比如 Polymer.dart 和 Angular.dart 可能)需要pub serve。他们使用可以即时生成一些 Dart 代码的转换器,并且在不应用转换器时某些事情不起作用(pub build 也在生成 JS 之前应用这些转换器)。在开发过程中使用pub serve 通常是个好主意。
    • 当我尝试使用 pub serve 打开 Dartium 时,它就像在 Chrome 上一样工作,但没有 packages/browser/dart.js 脚本,它不起作用,因为出于某种原因,它无法使用 Dart VM 运行 application/dart 脚本。但是,我会研究 IntelliJ,因为这可能会起作用。感谢您的帮助!
    • 看来我只需要--user-data-dir=/tmp/dartium_dir 标志。然后,我去了chrome://version,它把--user-data-dir=/tmp/dartium_dir --no-sandbox --flag-switches-begin --flag-switches-end列为命令行参数。
    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 2021-03-11
    • 2021-09-17
    • 2015-08-15
    • 1970-01-01
    • 2016-06-06
    • 2013-01-10
    • 2018-06-23
    相关资源
    最近更新 更多