Не удалось создать «Рабочий» с рабочим файлом JS, расположенным в другом домене, при использованииа- - PullRequest
0 голосов
/ 25 сентября 2019

Я использую реагировать-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 или любой другой способ, которым браузеры обрабатывают загрузку внешних скриптов, которые мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...