@karpo518

Почему webpack-dev-server не видит файл в каталоге /public/assets?

Frontend-код делает GET-запрос к статическому файлу на сервере. При локальном запуске сборки webpack-dev-server этот файл не отдаёт, потому что не видит его. Как сделать, чтобы видел? Если переложить файлик из public/assets в public, то он становится доступен из браузера. Но frontend ждёт его именно по адресу public/assets/test.json

Настройки webpack-dev-server
devServer: {
      host,
      port,
      hot: true,
      allowedHosts: 'all',
      devMiddleware: {
        publicPath: '/',
        stats: { colors: true },
      },
      client: {
        overlay: {
          runtimeErrors: error => {
            console.log(error);
            return false;
          },
        },
      },
      headers: {
        'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Cache-Control',
        'Access-Control-Allow-Methods': 'GET, PUT, POST, OPTIONS',
        'Access-Control-Allow-Credentials': 'true',
        'Access-Control-Allow-Origin': '*',
      },
      static: `${path.resolve(__dirname)}/../assets/`,
    },
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
@karpo518 Автор вопроса
В моём проекте использовался devMiddleware, который переопределял publicPath для всех статических файлов.
...    
devServer: {
      ...
      devMiddleware: {
        publicPath: '/',
      }
      ...
}
...

Чтобы задать нужный publicPath, потребовалось переопределить его при подключении каждого статического каталога. Вот как это выглядит:
static: [
        { directory: `${path.resolve(__dirname)}/../assets/`, publicPath: '/assets/'},
        { directory: `${path.resolve(__dirname)}/../public/assets/`, publicPath: '/assets/'},
      ],
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы