случайная ошибка времени выполнения 404. js angular в производстве - PullRequest
0 голосов
/ 10 июля 2020

Я создаю приложение angular с сервером узла, которое развернуто в GAE. Все работает нормально, но внезапно случайно выскакивает ошибка 404, и сайт не загружается, если я полностью не очистил свой кеш. Это не разовый сценарий, и он происходит случайно. Однако я не могу точно определить ошибку. Мое приложение отлично работает как при локальном использовании, так и при запуске его через сервер после его создания для продукта.

const path = require('path');
const express = require('express');

var app = express();
app.use(express.json())
const allowedExt = [
  '.js',
  '.ico',
  '.css',
  '.png',
  '.jpg',
  '.woff2',
  '.woff',
  '.ttf',
  '.svg',
  '.gif',
  '.GIF'
];
//hopefully solving syntax error
app.get('*', (req, res) => {
      console.log(req.url);

      if (allowedExt.filter(ext => req.url.indexOf(ext) > 0).length > 0) {
        res.sendFile(path.join(__dirname,`angularFront/dist/${req.url}`));
      } else {
        res.sendFile(path.join(__dirname, 'angularFront/dist/index.html'));
      }
});

var server = app.listen(process.env.port || 8080, function () {
  console.log('Listening');
  var port = server.address().port;
});

В нем включен CI / CD, поэтому ничего не работает вручную или не подвержено человеческим ошибкам. Я действительно думаю, что это проблема либо с моим файлом сервера / процедурой развертывания / проблемой GAE. Вот мой сценарий для его запуска

npm install && ng build --prod --source-map=false --crossOrigin=use-credentials

1 Ответ

0 голосов
/ 19 июля 2020

Я думаю, что ошибки 404 Not Found связаны как с конвейером CI / CD, так и со сроком действия файлов stati c. По по умолчанию всем файлам stati c дается крайний срок истечения 10 минут, что помогает уменьшить задержку загрузки страницы за счет кэширования. Когда приложение построено, Angular генерирует уменьшенные файлы JS, и имена этих файлов обычно меняются. Затем, когда конвейер CI / CD развертывает новую версию веб-сайта, могут возникнуть некоторые пользовательские запросы и старая версия файла, которой больше нет. Этот факт объясняется в разделе Разделение трафика c документации, где также описаны некоторые методы, которые могут быть использованы для обработки перехода между файлами stati c, различающимися в разных версиях.

...