Сбой при перезагрузке локации на сервере веб-пакетов - Vue 2 - PullRequest
0 голосов
/ 30 сентября 2019

Я использую инструмент Vue-CLI в своем основном компоненте App.vue:

// template code omitted for convenience
@Component
export default class App extends Vue {
  private mounted(): void {
    // checking app version
    const storage = window.localStorage

    this.$http.getVersion().then((resp: any) => {
      const version = resp.data.id

      if (storage.getItem('app_version') !== null && storage.getItem('app_version') != version) {
        window.location.reload(true)
        storage.setItem('app_version', version)
      }
    })
  }
}

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

this.$http - это экземпляр axios;

resp.data.id - возвращает версиюкак число;

Проблема здесь в том, что когда я вручную изменяю версию в localStorage (в браузере), затем обновляю браузер, мой веб-сервер devpack завершает работу с ошибкой:

"serve: vue-cli-service serve npm ERR! Статус выхода 1"

Также проверен полный журнал отладки:

11 silly lifecycle project@0.1.0~serve: Returned: code: 1  signal: null
12 info lifecycle project@0.1.0~serve: Failed to exec serve script
13 verbose stack Error: branchio@0.1.0 serve: `vue-cli-service serve`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/Users/alexanderkim/.nvm/versions/node/v12.10.0/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:326:16)
13 verbose stack     at EventEmitter.emit (events.js:209:13)
13 verbose stack     at ChildProcess.<anonymous> (/Users/alexanderkim/.nvm/versions/node/v12.10.0/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:209:13)
13 verbose stack     at maybeClose (internal/child_process.js:1021:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
20 error code ELIFECYCLE
21 error errno 1

Что это может быть?

1 Ответ

0 голосов
/ 19 октября 2019

Эта перезагрузка была предназначена для очистки кэша браузера после повторного развертывания приложения.

Я исправил это с помощью очистки кэша nginx:

location / {
    root /usr/share/nginx/html;
    try_files $uri $uri/ /index.html;
    add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate';
    expires 0;
}

Vue-CLI 3 по умолчанию -хэширование всех ресурсов, поэтому за это отвечал index.html.

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