Angular 2: файл не найден на локальном.файл json

Я видел несколько разных сообщений о невозможности найти локальные файлы, чтобы открыть их, будь то изображения или файлы данных, но ни одно из решений не сработало для меня. Я предполагаю, что есть какая-то конфигурация, которую я пропускаю.

файл я ищу в папке с именем "данные" на том же уровне, что и мое приложение.html и приложение.TS файлов.

вот что у меня есть в приложении.html, PS Я также использую Ionic2:

<ion-menu (click)='getDepartments()' side='right' type='overlay' [content]="content">

и в приложении.файл ТС я есть:

getDepartments() {
    this.http.get('/data/data.json')
        .map(res => res.json())
        .subscribe(
            data => this.departments = data,
            err => console.log(err),
            () => console.log('Random Quote Complete')
        );
}

Я пробовал:

./data/data.json

data/data.json

app/data/data.json

и любой другой путь. И они все возвращают 404 файл не найден ошибка. Это похоже на растущие боли при знакомстве с Angular 2. Заранее спасибо

4 ответов


предыдущие ответы сказали, чтобы поместить его непосредственно в www папка, чтобы сделать его доступным для приложения. Я бы сказал, что это не лучшее решение, как www папка исключается с помощью .gitignore во вновь созданном проекте Ionic2.

вместо этого поместите его внутрь src/assets папка, и она также будет доступна в приложении, и она не будет исключена из репозитория git (по умолчанию). Затем вы можете получить доступ через: this.http.get('assets/file.json');

вы можете изменить .файл gitignore, но тогда вы можете включать другие ненужные файлы.


Я не понимал, что работа с Ionic, что он компилирует все в папке приложения и помещает его в папку www/build. Поэтому, когда я поместил путь в папку uncompiled app, я не понял, что файл, в который я помещаю путь, не там, где я думаю.

поэтому я сделал две вещи, каждая из которых работала. Я помещаю файлы непосредственно в файл www (не помещайте их в файл сборки, поскольку они будут удалены каждый раз, когда вы запускаете ionic serve), а затем исправьте путь соответствующим образом. Или просто исправьте путь, зная, что когда вы ищете файл в своем приложении.ts, сначала нужно выйти из www/build.


для любого, кто заинтересован в решении той же проблемы. Если вы используете угловой CLI, и вы хотите сделать любую папку доступной через http, как в этом случае папка "данные".

перейдите в Angular-CLI.Затем JSON добавляет "имя папки", которое является" данными " в разделе приложения -> активы

"apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico",
        "data"
      ],

может ли ваш сервер видеть папку "/ data"? Убедитесь, что файл JSON находится в том же каталоге, что и общедоступные/статические файлы.