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 находится в том же каталоге, что и общедоступные/статические файлы.