我正在使用dart2js在我的Ubuntu服务器上将dart编译为JavaScript。

我可以使用简单的命令,例如print(),但似乎无法使用DOM。
下面的代码返回null

除了包括编译的out.js之外,我还需要使导入工作吗?

import 'dart:html';

void main() {
    print(document.querySelector('body'));
}

HTML:

<!DOCTYPE HTML>
<html>
<head>
    <link rel="stylesheet" href="/css/f4cacce_main_1.css" />
    <script src="/js/51de0d2_main_1.js"></script>
</head>
<body>
</body>
</html>

最佳答案

如果您手动导入out.js,则问题可能出在HTML文件中。请添加到您的问题。

您应该使用pub build而不是dart2js(pub build在内部使用dart2js)。 pub build负责为生成的JavaScript添加脚本标签。

编辑

运行pub build之前,您的HTML应该看起来像这样

<!DOCTYPE HTML>
<html>
<head>
  <link rel="stylesheet" href="/css/f4cacce_main_1.css" />
</head>
<body>
  <script type="application/dart" src="main1.dart"></script>
  <script src="packages/browser/dart.js"></script>
</body>
</html>

(假设main1.dart是包含您的Dart代码的文件)。

您可以在Dartium中打开它,而无需构建JavaScript。
您还可以使用pub serve提供此服务,然后从Dartium或不支持Dart的浏览器中将其打开,并且pub serve始终返回正确的输出(Dart或JS)

关于dart - 没有IDE的dart2js编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27933088/

10-12 04:34