2017-02-12 3 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 не найдено для URL: http://localhost:9876/test.json

Я попытался поместить этот файл в другом месте:

  • "C: \ MyAngularApp"
  • "C: \ MyAngularApp \ ЦСИ"
  • «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

относительные пути по умолчанию не относятся к корню. Если вы хотите «pathToSrc/assets/test».json ', который относится к корневому, вы можете добавить тег на вашу HTML-страницу, в пределах

pixelbits

+0

У меня уже есть этот тег. – tBlabs