2012-10-31 21 views
4

我有這個pubspec.yaml無法找到引用源:包

name: Dart Pages 
    description: The Dart platform. 
    dependencies: 
     web_components: any 
     mongo_dart: any 

然後我跑工具>酒吧安裝,操作成功完成。

當我運行的應用程序,我得到以下錯誤:

dart --enable-checked-mode web\page.dart 
    Unable to open file: C:/Users/Samer/Documents/GitHub/dart/web/packages/mongo_dart/mongo_dart.dart'file:///C:/Users/Samer/Documents/GitHub/dart/web/page.dart': Error: line 1 pos 1: library handler failed 
    #import("package:mongo_dart/mongo_dart.dart"); 

我使用Windows 7 64位&最新飛鏢編輯器版本0.2.1_r14167

的問題似乎不是隻有mongo_dart,但所有其他庫也是如此,編輯器正在尋找在/ dart/web/packages處的軟件包的錯誤路徑,而我在文件夾/ dart/packages中找到了。

謝謝你的幫助和時間。

+0

你可以發表你的文件格式的描述嗎?你可以確認web目錄是否有軟件包目錄的符號鏈接?你可以在page.dart中粘貼代碼嗎?謝謝! –

回答

0

我在這裏有類似js-interop包的東西。我將':'更改爲'/',並且工作正常。

原始聲明:

import("package:mongo_dart/mongo_dart.dart"); 

修改聲明:

#import("package/mongo_dart/mongo_dart.dart"); 

你也可以試試這個(它的工作對我來說):

import 'packages/mongo_dart/mongo_dart.dart'; 
+1

這可能有時巧合地工作,但你真的不想這樣做。這樣做會打破傳遞性進口。如果A導入使用上述語法導入C的B,則不太可能正確解析。 – munificent

1

你有沒有運行pub install,因爲你創建了「web」目錄?如果沒有,請嘗試。您需要在包含您的Dart入口點的目錄內有一個「包」目錄才能正確解析「包:」導入。

酒吧將爲您創建這些目錄,但它需要知道這樣做。如果你在你的軟件包中添加一個新的目錄,你會想再次運行pub install,這樣它會爲它添加一個「packages」目錄。

0

我在嘗試導入單元測試類似的問題。我使用dart editor插件在windows 7 64位中運行Eclipse 4.2。

刪除c:\ USERS \ <下的'pub'文件夾用戶 > \ AppData \ Roaming \爲我工作。

此功勞歸功於darlang google組的Samer Ali,請參閱here

1

我和TeamCity有類似的問題。在我的開發機器上,我可以一遍又一遍地執行pub getpub build,它的工作原理非常棒,但是這僅在我第一次使用TeamCity構建解決方案時起作用。

經過大量的搞亂之後,我終於發現了,大部分是通過試驗和錯誤,這個問題是由TeamCity在構建解決方案之前清理文件夾引起的。

我找不到如何pub作品的任何合理的文檔,我不知道爲什麼這僅適用的第一次,但我的試驗和錯誤發現,執行每pub cache repairpub get之前建立和最後pub build作品可重複的,我的TeamCity項目現在每次都能成功建立。

+0

聽起來很麻煩。我不瞭解TeamCity。它可能會同時運行多個'pub get'嗎?也許有一種方法可以指定pub-cache目錄用於爲每個實例使用不同的目錄(必須查看它,而不是在我的計算機上) –

+0

可以配置TeamCity以啓動新的構建,即使在當前構建仍在運行,但這不是默認設置。也有可能讓TeamCity總是對特定的構建使用相同的文件夾,而不是在構建之間清除內容;它解決了這個問題,但它不是一個乾淨的構建。我想知道如果我從源代碼控制中獲得解決方案,它將構建到一個空文件夾中。 – bikeman868