2015-09-18 23 views
1

我開始與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方法的參數的建議使用的工作方案。

+0

資源處於實驗階段,可能無法正常工作還沒有。特別是它試圖創建一個套接字連接恕我直言,看起來不太好。 –

+0

_「資源是實驗性的,可能無法正常工作。」_所以我應該把它作爲一個錯誤的地方? – StephanS

+0

我想是的。 github.com/dart-lang/sdk/issues,請交叉鏈接這個問題。 –

回答

相關問題