Недавно я решил проблему с холстом PaperJS, и сейчас я пытаюсь импортировать SVG с помощью функции project.importSVG ().
Я могу успешно импортировать файл с адресом http, например: https://upload.wikimedia.org/wikipedia/commons/8/84/Example.svg
Однако все загрузки локальных файлов завершаются ошибкой с кодом ошибки 0. Я думал, что добавление пути с file:// может что-то сделать, но без кубиков
Код ошибки:
Error: Could not load "file:///Users/#####/Documents/####/########/green-leaf_final.svg" (Status: 0)
Я использую следующий код javascript:
project.importSVG("file:///a/path/to/file/green-leaf_final.svg", function (item) {
console.info(item);
});
Примечание: для локальных файлов появляется предупреждение, в котором также говорится:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at file:///a/path/to/file/green-leaf_final.svg. (Reason: CORS request not http).
Что лично кажется еще более запутанным - я не пытаюсь читать удаленный ресурс, но, возможно, префикс file:// интерпретируется таким образом?





Ответ на этот вопрос касается скорее всего веб-хостинга и веб-браузеров, чем чего-либо еще.
Хотя этот ответ может не сказать вам напрямую, почему любой файл, доступ к которому осуществляется из удаленного источника (или даже на вашем локальном компьютере), для определенных типов запросов браузера, останавливает вас от доступа к этому ресурсу, если заголовок CORS не включен в источник.
Предположительно, локальная файловая система не может предоставить эту информацию, и поэтому вы должны разместить свой файл на localhost или другом хостинге, который у вас есть для этого.
Если вы уже разрабатываете PaperJS (и, следовательно, у вас есть npm в качестве инструмента командной строки), и это звучит устрашающе, то используйте npm install http-server -g и проверьте документацию здесь, чтобы узнать о флагах, которые нужно предоставить, и о том, как запустить сервер. Для этого вы должны перейти в желаемый каталог, в котором находится ваш целевой файл, в оболочке командной строки ОС и написать http-server -o --cors.
Приведенная выше команда должна обслуживать все файлы вашего текущего каталога на localhost.