"Generation failed" 使用 dartdoc 生成文档时

"Generation failed" when generating docs with dartdoc

我正在尝试为我正在处理的 Flutter 项目生成文档。 我在我的项目文件夹中使用 dartdoc

是随Chocolatey安装的Dart SDK的dartdoc(所以不是Flutter的),我保存在我的系统PATH中。 dart --version 给出 Dart VM version: 2.0.0-dev.53.0 (Thu May 3 12:35:47 2018 +0200) on "windows_x64".

我使用 Flutter 的 Dart 的 dartdoc 得到完全相同的错误,所以 运行 path_to_flutter\flutter\bin\cache\dart-sdk\bin\dartdoc.bat' 在我的项目目录中。

我的flutter --version是:

Flutter 0.3.2 • channel beta • https://github.com/flutter/flutter.git
Framework • revision 44b7e7d3f4 (3 weeks ago) • 2018-04-20 01:02:44 -0700
Engine • revision 09d05a3891
Tools • Dart 2.0.0-dev.48.0.flutter-fe606f890b

在这两种情况下,dartdoc 的输出都是在解析所有项目文件之后:

Generating documentation for 'pindery' into C:\Users\Edoardo Debenedetti\Documents\Tongji\Software Engineering\Progetto\pindery\doc\api\
parsing lib\catalogue\catalogue.dart...
parsing lib\catalogue\catalogue_element.dart...

[...]

Initialized dartdoc with 775 libraries in 61.7 seconds
documenting pindery

Generation failed: Bad state: Could not find "packageGraph.version" in given context
package:mustache4dart/mustache_context.dart 88                                               _MustacheContext._getInThisOrParent
package:mustache4dart/mustache_context.dart 78                                               _MustacheContext.field
package:mustache4dart/src/tokens.dart 169                                                    _ExpressionToken.apply
package:mustache4dart/src/tokens.dart 247                                                    _EscapeHtmlToken.apply
package:mustache4dart/src/tokens.dart 40                                                     Token.call
package:mustache4dart/src/tmpl.dart 101                                                      _Template._write
package:mustache4dart/src/tmpl.dart 76                                                       _Template.call
package:mustache4dart/src/mustache.dart 11                                                   render
package:mustache4dart/src/tokens.dart 211                                                    _PartialToken.apply
package:mustache4dart/src/tokens.dart 40                                                     Token.call
package:mustache4dart/src/tmpl.dart 101                                                      _Template._write
package:mustache4dart/src/tmpl.dart 76                                                       _Template.call
package:dartdoc/src/html/html_generator_instance.dart 287                                    HtmlGeneratorInstance._build
package:dartdoc/src/html/html_generator_instance.dart 171                                    HtmlGeneratorInstance.generatePackage
package:dartdoc/src/html/html_generator_instance.dart 90                                     HtmlGeneratorInstance._generateDocs
package:dartdoc/src/html/html_generator_instance.dart 36                                     HtmlGeneratorInstance.generate
===== asynchronous gap ===========================
dart:async                                                                                   _Completer.completeError
package:dartdoc/src/html/html_generator_instance.dart                                        HtmlGeneratorInstance.generate
===== asynchronous gap ===========================
dart:async                                                                                   new Future.microtask
package:dartdoc/src/html/html_generator_instance.dart 34                                     HtmlGeneratorInstance.generate
package:dartdoc/src/html/html_generator.dart 107                                             HtmlGenerator.generate
===== asynchronous gap ===========================
dart:async                                                                                   new Future.microtask
package:dartdoc/src/html/html_generator.dart 73                                              HtmlGenerator.generate
package:dartdoc/dartdoc.dart 144                                                             Dartdoc.generateDocs
===== asynchronous gap ===========================
dart:async                                                                                   _asyncThenWrapperHelper
package:dartdoc/dartdoc.dart 129                                                             Dartdoc.generateDocs
E:\b\build\slave\dart-sdk-windows-dev\build\sdk\third_party\pkg\dartdoc\bin\dartdoc.dart 77  main.<fn>.<fn>
===== asynchronous gap ===========================
dart:async                                                                                   new Future.microtask
E:\b\build\slave\dart-sdk-windows-dev\build\sdk\third_party\pkg\dartdoc\bin\dartdoc.dart 76  main.<fn>.<fn>
dart:async                                                                                   runZoned
E:\b\build\slave\dart-sdk-windows-dev\build\sdk\third_party\pkg\dartdoc\bin\dartdoc.dart 76  main.<fn>
===== asynchronous gap ===========================
dart:async                                                                                   new Future.microtask
E:\b\build\slave\dart-sdk-windows-dev\build\sdk\third_party\pkg\dartdoc\bin\dartdoc.dart 75  main.<fn>
package:stack_trace                                                                          Chain.capture
E:\b\build\slave\dart-sdk-windows-dev\build\sdk\third_party\pkg\dartdoc\bin\dartdoc.dart 75  main

是我项目的问题吗?我该如何解决?

非常感谢。

其实是一个bug,解决方法是在项目的pubspec.yaml文件中放一个版本。 例如

name: pindery
description: An amazing party app
version: 0.0.1-alpha0

[...]

这样文档就生成成功了。 您可以在 dartdoc 的 GitHub 问题跟踪 page.

上查看该问题