Я использую реагировать-pdf , чтобы сделать PDF-файл встроенным на моем сайте Django / Wagtail.
Для этого я создаю div в своем HTML-шаблоне с идентификатором реагирования и запускаю файл с именем index.js
, который представляет собой довольно простой файл React, который создает элемент DocumentViewer и использует ReactDom для его рендеринга вdiv с идентификатором «реакция».
Я получаю сообщение об ошибке при запуске моего веб-сайта в производственном процессе при загрузке рабочего файла из основного пакета, в частности, ошибка, связанная с тем, что сценарий worker.js не может быть доступен из источника ", например".com '
Точный код на самом деле не имеет значения (хотя я могу опубликовать его, если это необходимо, но проблема вызывает загрузку реакции-pdf.
Я использую следующееоператор импорта как , рекомендованный документами :
import {Document, Outline, Page} from 'react-pdf/dist/entry.webpack';
Затем я использую webpack для объединения и минимизации этого файла со следующим webpack.config.js
:
var path = require("path");
var webpack = require('webpack');
var BundleTracker = require('webpack-bundle-tracker');
module.exports = {
context: __dirname,
entry: './project/app_name/static/js/index.js',
output: {
path: path.resolve('./project/app_name/static/bundles/'),
publicPath: '/static/bundles/',
filename: "[name]-[hash].js",
},
plugins: [
new BundleTracker({filename: './webpack-stats.json'}),
],
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: ['babel-loader']
}
]
},
resolve: {
extensions: ['*', '.js', '.jsx']
}
};
Thisсоздает два файла в папке static/bundles
моего приложения Django, main-<hash>.js
и <hash>.worker.js
.
Файл main-<hash>.js
создает такого работника:
return new Worker(r.p+"<hash>.worker.js")
Когда ябеги мой Джангo установка на моем локальном компьютере, где я обслуживаю статические файлы с локального хоста, никаких проблем не возникает, что вполне логично, поскольку все файлы имеют одинаковое происхождение.
Однако, когда я запускаю его в работе, где я обслуживаюмои статические файлы из пространства DigitalOcean, Chrome выдает следующую ошибку:
main-.js: 38 Uncaught DOMException: не удалось создать 'Worker': сценарий в 'https://ams3.digitaloceanspaces.com/-media/static/bundles/.worker.js' не может бытьдоступ из источника 'https://www.example.com'.
Я уже проверил заголовки CORS в этом пространстве, и, кажется, все в порядке.
Когда я использую команду curl следующим образом:
curl -v 'https://ams3.digitaloceanspaces.com/<project>-media/static/bundles/<hash>.worker.js' -X OPTIONS -H "Origin:https://example.com" -H "Access-Control-Request-Method: GET,PUT,HEAD,POST"
Я получил ответ 200 OK.
Я понятия не имею, почему Chrome отклонил бы загрузку этого скрипта.
Есть ли что-то, чего мне не хватает вКонфигурация моего веб-пакета, настройки CORS или любой другой способ, которым браузеры обрабатывают загрузку внешних скриптов, которые мне не хватает?