2017-02-12 43 views
0

我嘗試測試我Angular2服務是這樣的:不能訪問本地文件

spec.ts文件 'C:/ MyAngularApp/src目錄/應用/通用'

let testFile = "./test.json"; // full path: C:\MyAngularApp\src\app\common\test.json 

http.get(testFile).map(d => d.json()).subscribe(()=>log("it works")) 

但我不能使它工作 - 我:

失敗:有狀態響應:404未找到的網址:http://localhost:9876/test.json

我試圖把這個文件在其他位置:

  • 「C:\ MyAngularApp」
  • 「C:\ MyAngularApp \ SRC」
  • 「C:\ MyAngularApp的\ src \應用「
  • 」C:\ MyAngularApp的\ src \資產「

但沒有結果。

我認爲這是一件與路徑..

這就是爲什麼我要通過http.get加載本地文件的原因: 我想要做一些額外的層爲我的我的一些服務。我將其稱爲「HttpResourse」,它包含如下方法:Create(),Get(),Update(),Delete()和SetResourceUrl(resourceUrl:string)。最後一個是我需要通過路徑加載文件的原因。

+0

你爲什麼試圖通過HTTP訪問項目中的文件?爲什麼不直接導入? – jonrsharpe

+0

我想測試MyHttpService,所以我需要「下載」文件。 – tBlabs

+0

如果你想測試你的服務,使用'MockBackend'作爲文檔顯示,那麼你甚至不需要有互聯網連接來測試。 – jonrsharpe

回答

2

我找到了答案!

當我設置路徑「assets/test.json」一切正常。它不能是「pathToSrc/assets/test.json」或類似的東西。它必須是「資產」或「./assets」。

但是爲什麼?爲什麼這個目錄(「資產」)如此特別?

+0

默認情況下,相對路徑與root不相關。如果你想'pathToSrc/assets/test。json'工作,這是相對於根,您可以添加一個標記到您的HTML頁面,在

pixelbits

+0

我已經有這個標記。 – tBlabs