Ваш главный вопрос: «Как получить файл json для отображения в папке« dist ». Как уже упоминалось в комментариях, это вопрос простого включения.
Для скелета проекта в JSPM сделать следующее:
- Откройте файл
~/build/export.js
- Включить файл или папку, содержащий файл .json в первом 'список' раздел
Это выглядит что-то вроде:
module.exports = {
'list': [
'index.html',
'config.js',
'favicon.ico',
'LICENSE',
"jspm_packages/npm/[email protected]/js/browser/bluebird.min.js",
'jspm_packages/system.js',
'jspm_packages/system-polyfills.js',
'jspm_packages/system-csp-production.js',
'styles/styles.css',
'core/data/5e-SRD-Monsters.json'
],
Здесь an an example о том, где его поставить.
Важно: Учитывая, что вы говорите о папке «DIST» я предполагаю использовать скелет с JSPM. Процесс совершенно другой, когда вы создаете приложение Aurelia, построенное с помощью CLI, скелетного webpack или, возможно, стартового набора.
Теперь у вас есть файл .json в папке dist. Но использование XMLHttpRequest для загрузки файла: // не является точно рекомендуемым подходом. Как уже упоминалось в комментариях, в идеале вы должны загружать его как HTTP-запрос, а не запрос файла.
Давайте рассмотрим это. Все, что вам нужно сделать, это добавить Aurelia-выборки-клиент в библиотеку, а затем вы можете просто сделать что-то вроде этого:
import { HttpClient } from 'aurelia-fetch-client';
export class App {
get_stuff() {
let http = new HttpClient();
// assuming the file is in /dist/core/data/,
// simply read it through a promise + through a relative path:
http.fetch('./core/data/5e-SRD-Monsters.json')
.then(data => console.log(data));
}
}
Теперь это использует HTTP, а не файл: //, который позволит устранить любые которые могут возникнуть, например, отсутствие доступа к файловой системе напрямую.
В целях тестирования вы можете попробовать разместить файл в той же папке, где находится скрипт/код, и попытаться получить к нему доступ только по имени файла (исключая абсолютный путь)? –
я сделал, та же проблема, json isnt присутствует в дистрибутиве Мне просто нужно включить его как-то, я думаю, но как? – DaDungeonMaster
Попробуйте использовать 'http' protocol вместо' file'. – Unrealsolver