Как получить данные из файла JSON в рамках aurelia?

Я пытаюсь получить данные из внешнего файла JSON, используя aurelia-fetch-клиент, но выдает ошибку 404 not found.

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

Вот мой код:

import {HttpClient } from 'aurelia-fetch-client';

let httpClient = new HttpClient();
export class ChangeRequest {
constructor(){
  httpClient.fetch('sample.json')
    .then(response => response.json())
    .then(res => {
      console.info(res);
 }
}
}

Я должен получить результат данных JSON, но получаю следующую ошибку:

Как получить данные из файла JSON в рамках aurelia?

Вот моя структура папок, созданная с помощью aurelia-cli

Как получить данные из файла JSON в рамках aurelia?

Как видите, sample.json находится внутри папки src, и я попытался поместить его в папку src/Assets, но результат тот же.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
811
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Причина, по которой он выдает вам 404, заключается в том, что на веб-сервере разработки нет этого файла, поскольку вы можете видеть, откуда он пытался получить файл: http://localhost:8080/sample.json

Что вы можете сделать, так это убедиться, что он идет на ваш сервер разработки, возможно, поместив его в ту же папку с вашими активами, такими как изображения. Если вы используете aurelia-cli, возможно, вы также можете поместить его в папку dist.

Помещение его в папку dist сработало, как и ожидалось, но если я это сделаю au build --env prod, то вся папка dist будет заменена, а файл json исчезнет, ​​возможно, нужно настроить это в webpack.config.js, чтобы он копировался автоматически, я вернусь, как только это будет сделано.

Ĭsααc tիε βöss 25.04.2019 15:41
Ответ принят как подходящий

Учитывая, что вы используете Webpack, у вас есть два варианта:

  • Сохраните файл в каталоге src и используйте оператор require для его загрузки.
  • Переместите файл в папку static и загрузите его с помощью fetch.

Вот скриншот примера с обоими:

Screenshot showing using both require and fetch for loading a json file

И исходный код:

export class App {
  async attached() {
    const importedData = require('./in-src.json');

    const fetchedData = await fetch('in-static.json')
      .then(response => response.json());

    console.info('JSON loaded via import', importedData);
    console.info('JSON loaded via fetch', fetchedData);
  }
}

Наконец, консоль при запуске приложения:

Что касается размещения этого в документах, это не совсем специфично для Aurelia. Это концепция Webpack. Даже понимание того, что вы не можете получить файлы из своего каталога src, является концепцией Webpack в большей степени, чем концепция Aurelia.

Ashley Grant 26.04.2019 19:04

Тогда почему в документах содержится другой общий синтаксис, не связанный с aurelia? Документы говорят использовать плагин aurelia-fetch-client, но ваше решение не использовало его, тогда как я должен поместить его в статическую папку в первую очередь? Должен был упомянуть в документах. Все остальные фреймворки объясняют загрузку из внешнего json. Теперь я понимаю, почему этот фреймворк не популярен.

Ĭsααc tիε βöss 28.04.2019 17:07

Stack Overflow — прекрасное место, где можно получить помощь в решении проблем, с которыми вы сталкиваетесь при разработке нового программного обеспечения. Это не место для пренебрежительных комментариев. Вы получили бесплатную техническую поддержку от трех членов основной команды Aurelia как здесь, так и на GitHub (где вы явно проигнорировали инструкции в нашем шаблоне задачи). Заданный вами вопрос не был правильно сформулирован, так как он не содержал адекватной информации для ответа на ваш вопрос (мне пришлось прочитать ваш комментарий к ответу, чтобы понять, что вы используете Webpack с интерфейсом командной строки Aurelia)... (продолжение)\

Ashley Grant 29.04.2019 18:12

(продолжение) После получения бесплатной поддержки, даже несмотря на то, что вы проигнорировали инструкции по поддержке, вы решили умалить нашу документацию и саму структуру. Бесплатный фреймворк, разработанный волонтерами. Подумайте о том, насколько правдоподобно звучит ваш комментарий, и учтите, что такие комментарии, как ваш, — это именно тот тип комментариев, который отталкивает разработчиков от разработки с открытым исходным кодом. И в следующий раз, может быть, подумайте о том, чтобы не делать такой комментарий.

Ashley Grant 29.04.2019 18:15

Другие вопросы по теме