Firebase Hosting: функция не работает с ServerMiddleware (Vue / Nuxt) - PullRequest
0 голосов
/ 05 марта 2020

Я строю проект, который использует ServerMiddleware для визуализации некоторых страниц только на стороне клиента (я не могу найти другой способ добиться того, чтобы это работало без ServerMiddleware. Проблемы при обновлении страниц и т. Д.) *

Проблема: К сожалению, каждый раз, когда я пытаюсь развернуть свою функцию Firebase через 'firebase deploy', я получаю сообщение об ошибке:

Ошибка: не удается найти модуль '~ / serverMiddleware / селективные ССР. js '

Функция строит ОК, если я исключаю следующую строку. Насколько я вижу, Nuxt / Vue не включает ~ / serverMiddleware / как часть своей сборки.

Вот код в nuxt.config. js для ссылки my serverMiddleware:

serverMiddleware: ['~/serverMiddleware/selectiveSSR.js']

Добавление каталога или пути (как указано выше) к самому файлу в Build в nuxt.config. js также не помогает. Может быть, я делаю это неправильно?

Все отлично работает при локальном тестировании (не сборке).

Любые идеи о том, как я могу решить эту проблему, пожалуйста?

Спасибо!

1 Ответ

1 голос
/ 06 марта 2020

Хорошо, так что для всех, кто ударил это, вот как я справился с этим.

Во-первых, я не знаю, является ли это ошибкой Firebase Hosting или Nuxt (я бы догадался, Nuxt, но я исправлюсь), но вот что делать ....

1) Удалите все ссылки на ServerMiddleware из nuxt.config. js

2) Добавьте следующее в nuxt.config. js

modules: [
    '~/local-modules/your-module-name'
  ],

3) Создайте каталог ~ / local-modules / your-module-name в вашем проекте root

4) В новом каталоге создайте пакет . json:

{
    "name": "your-module-name",
    "version": "1.0.0"
  }

и index. js - ключевая вещь, this.addServerMiddleware позволяет вызывать промежуточное ПО на стороне сервера

module.exports = function(moduleOptions) {
  this.addServerMiddleware('~/serverMiddleware/')
}

5) Создать каталог ~ / serverMiddleware

6) Добавьте свою функцию промежуточного ПО в индекс. js в новом каталоге:

export default function(req, res, next) {
 // YOUR CODE
  next() // Always end with next()!
}

7) Обновите пакет . json с вашим новым локальным модулем в разделе «зависимости»:

    "your-module-name": "file:./local-modules/your-module-name"

Не забудьте, что вам нужно делать это и в каталоге функций, иначе Firebase пожалуется, что не может найти ваш новый модуль

...