PaperJS importSVG из локального файла - PullRequest
0 голосов
/ 09 ноября 2018

Недавно решив проблему, которая возникла у меня с PaperJS canvas, я сейчас пытаюсь импортировать 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.log(item);
});

N.B: для локальных файлов появляется предупреждение, в котором также говорится:

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:// интерпретируется таким образом?

1 Ответ

0 голосов
/ 09 ноября 2018

Ответ на этот вопрос больше касается общего веб-хостинга и веб-браузеров, чем что-либо еще.

Хотя в этом ответе может быть не указано напрямую, почему любой файл, доступ к которому осуществляется из удаленного источника (или даже с вашего локального компьютера), для определенных типов запросов браузера запрещает доступ к этому ресурсу, если не включен «заголовок CORS». с внутри источника.

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

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

Приведенная выше команда должна обслуживать все файлы вашего текущего каталога на localhost.

...