我開始與simple_transformer示例如何編寫一個簡單的Dart Pub變壓器simple_transformer。 這例如通過在代碼中指定它定義插入到文件中的內容使用core.Resource在Dart變壓器導致構建錯誤
String copyright = "Copyright (c) 2014, the Example project authors.\n";
代替我想使用新的(達特1.12)Resource class from the core package以便從本地文件(LIB /版權加載此版權信息。 TXT):
static Future<String> loadCopyright() {
var copyrightRessource = new Resource("package:simple_resource_loading_transformer/copyright.txt");
return copyrightRessource.readAsString();
}
雖然從main函數調用此方法適用
main() {
print('load copyright.txt');
//this loads the resource as expected
InsertCopyright.loadCopyright().then(
(String code)=>print(code)
);
}
,在變壓器調用它當嘗試轉換另一個包時(這是變形金剛的用途),apply-method失敗。你會得到一個
生成錯誤:變換InsertCopyright在{項目}拋出錯誤:加載錯誤的 「套餐:simple_resource_loading_transformer/copyright.txt」:SocketException:操作系統錯誤:連接被拒絕
如何我是否在Pub Pub Transformer中使資源工作?還是應該將這個缺失的功能添加到Dart?
更新
所以這裏是一個基於API變換
static Future<String> loadCopyright(Transform transform) {
var copyrightAssetId = new AssetId('simple_resource_loading_transformer', 'lib/copyright.txt');
return transform.readInputAsString(copyrightAssetId);
}
的變換實例來自你Transformer.apply方法的參數的建議使用的工作方案。
資源處於實驗階段,可能無法正常工作還沒有。特別是它試圖創建一個套接字連接恕我直言,看起來不太好。 –
_「資源是實驗性的,可能無法正常工作。」_所以我應該把它作爲一個錯誤的地方? – StephanS
我想是的。 github.com/dart-lang/sdk/issues,請交叉鏈接這個問題。 –