Angular, Uncaught SyntaxError: Неожиданный конец ввода при переходе в производство - PullRequest
0 голосов
/ 26 марта 2020

У нас есть новое приложение Angular 8. Компиляция с использованием 'ng build' и 'ng build --prod' все работает хорошо локально. Но при компиляции и докеризации через конвейер CI gitlab и развертывании в kubernetes у нас возникает «Uncaught SyntaxError: Неожиданный конец ввода». Компиляция этого приложения без ключа --prod показывает, что проблема заключается в модуле node_module:

(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["vendor"],{

/***/ "./node_modules/@angular/animations/fesm5/animations.js":
/*!**************************************************************!*\
  !*** ./node_modules/@angular/animations/fesm5/animations.js ***!
  \**************************************************************/

, и, похоже, проблема в том, что файл действительно поврежден и заканчивается на:

ViewportRuler.prototype.ngOnDestroy = /**
 * @return {?}
 */
function () {

, который объясняет ошибку. Думая, что это может быть связано с веб-пакетом, мы обновили его до следующего, но это, похоже, только переместило проблему в другую строку кода:

"webpack": "^4.42.1",
"webpack-cli": "^3.3.11"

Как исправить эту ошибку, которая полностью выходит за рамки нашего код? Это действительно проблема с веб-пакетом?

ОБНОВЛЕНИЕ : Я заметил, что проблема в следующем: похоже, файлы javascript загружаются не полностью. Сначала я подумал, что webpack не генерирует весь файл. Но когда я попытался явно загрузить с использованием точного URL-адреса в качестве приложения, я заметил, что оно выглядит правильным и полным. По какой-то причине, когда они загружаются через приложение angular, браузер блокирует файл. Хотя возвращается 200 OK, вкладка Network / Response devtools показывает, что файл на самом деле загружен не полностью. Есть идеи почему и как исправить?

1 Ответ

0 голосов
/ 27 марта 2020

Кажется, что nginx: alpine docker изображение не сжало файлы gzip. Я включил новый файл конфигурации в образ docker, содержащий некоторые конфигурации gzip:

gzip on;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/bmp image/svg+xml application/javascript;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

в файле docker (частично):

FROM nginx:alpine
COPY --from=node /app/nginx-http.conf /etc/nginx/conf.d

Я все еще озадачен это. Почему даже без gzip браузер перестал бы загружать файлы js? На уровне браузера настроен ли тайм-аут для загрузки файлов скриптов? Я не помню, чтобы когда-либо сталкивался с таким поведением раньше.

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