Express не может найти пакет Webpack - PullRequest
0 голосов
/ 04 июля 2019

Итак, я настраивал приложение MERN с основным пакетом, который запускает сервер Express, и клиентской папкой, которая содержит интерфейс React и имеет собственный пакет. Для тестирования клиента я использовал webpack-dev-server для запуска файла HTML в папке client/public, которая связывает пакет Webpack в папке dist. HTML-файл:

<!DOCTYPE html>
<html>
  <head>
    <title>React Config</title>
  </head>
  <body>
    <div id="root"></div>

    <script src="../dist/bundle.js"></script>
  </body>
</html>

Относительный путь для пакета правильный, и он отлично работает с использованием WDS. Однако, когда я пытаюсь передать этот файл через мой сервер Express, я получаю ошибку 404 для файла пакета. В моем server.js:

app.use(express.static('client'));

const appPage = path.join(__dirname, './client/public/index.html');

app.get('/', function(req, res) {
  res.sendFile(appPage);
});

Это правильно показывает файл HTML, но когда я перехожу на локальный сервер, он пытается найти bundle.js в http://localhost:3000/dist/bundle.js вместо http://localhost:3000/client/dist/bundle.js. Более того, даже когда я изменяю путь в HTML, чтобы он указывал на правильное местоположение, он все равно 404.

Итак, 2 вопроса:

1) Как я могу настроить пути для пакета Webpack, чтобы он был доступен как из WDS, запущенного в папке клиента, так и с моего сервера Express в основном пакете?

2) Почему пакет не обнаруживается Express, даже когда я изменяю путь, чтобы он был правильным? Я включил всю папку клиента как статическую для сервера.

1 Ответ

0 голосов
/ 04 июля 2019

Вы не должны использовать webpack-dev-server для производства, webpack-dev-server не создавать файл index.html, webpack-dev-server только для разработчиков.

Вы можете использовать эту команду для сборки:

webpack --config ./webpack.prod.js --mode production
...