簡體   English   中英

Dart AST 庫在編譯時失敗

[英]Dart AST library fails when compiled

我正在構建一個使用Dart 的 AST 庫的程序,只要我使用 Dart 解釋器運行程序( dart filename.dart ),它就可以正常工作。

一旦我想編譯程序( dart compile filename.dart ),程序無法加載文件,我有這個堆棧跟蹤:

#0      _PhysicalFile.readAsStringSync (package:analyzer/file_system/physical_file_system.dart:184)
#1      FolderBasedDartSdk.languageVersion (package:analyzer/src/dart/sdk/sdk.dart:400)
#2      FeatureSetProvider.build (package:analyzer/src/dart/analysis/feature_set_provider.dart:143)
#3      AnalysisDriver._createFileTracker (package:analyzer/src/dart/analysis/driver.dart:1500)
#4      new AnalysisDriver (package:analyzer/src/dart/analysis/driver.dart:291)
#5      ContextBuilder.buildDriver (package:analyzer/src/context/builder.dart:119)
#6      ContextBuilderImpl.createContext (package:analyzer/src/dart/analysis/context_builder.dart:94)
#7      new AnalysisContextCollectionImpl (package:analyzer/src/dart/analysis/analysis_context_collection.dart:55)
#8      _createAnalysisContext (package:analyzer/dart/analysis/utilities.dart:125)
#9      resolveFile (package:analyzer/dart/analysis/utilities.dart:115)
#10     main (package:DartProjects/dartprojects.dart:122)
#11     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299)
#12     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168)

我查看了源代碼以查看錯誤可能出在哪里,似乎在package:analyzer/src/dart/sdk/sdk.dart它嘗試獲取語言版本文件,而不是使用 PATH知道我的 dart sdk 在哪里,它試圖在我的 InteliJ 文件夾中找到它,但失敗了。 另外,我嘗試在新創建的 VM 上運行它,但它也失敗了。

這是產生這個 output 的代碼:

import 'dart:io';
import 'package:analyzer/dart/analysis/utilities.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';

void main(List<String> arguments) async {
  final fileName = Directory.current.path + r'\test.dart';

  var source = null;
  try {
    source = await resolveFile(path: fileName);
  } catch (e, s) {
    print('${s}');
    return;
  }
}

謝謝你的幫助。

不是一個好的解決方法。

將 Dart SDK 文件夾中的“版本”文件復制到項目的根目錄。
分析儀將接受並使用它。
如果您的編譯文件位於“bin”文件夾中,這將起作用。

這不是一個好的解決方法。

附言
這被稱為黑客攻擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM