Угловая 7 Универсальная маршрутизация на базе огня - PullRequest
2 голосов
/ 13 мая 2019

Я следовал этому уроку: https://fireship.io/lessons/angular-universal-firebase/

Кажется, все работает. Я могу просмотреть приложение Angular через URL-адрес хостинга Firebase. Но: как только я назову маршрут, например, http://xxx.firebase.app/home Я получаю эту ошибку (скопировано из журнала функций firebase)

TypeError: handler is not a function
    at cloudFunction (/srv/node_modules/firebase-functions/lib/providers/https.js:57:9)
    at /worker/worker.js:783:7
    at /worker/worker.js:766:11
    at ZoneDelegate.invokeTask (/srv/dist/server.js:5145:31)
    at Zone.runTask (/srv/dist/server.js:4917:47)
    at ZoneTask.invokeTask (/srv/dist/server.js:5220:34)
    at ZoneTask.invoke (/srv/dist/server.js:5209:48)
    at data.args.(anonymous function) (/srv/dist/server.js:6143:25)
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickDomainCallback (internal/process/next_tick.js:219:9)

Если я позвоню, просто позвоните по URL-адресу пожарной базы без /home, он правильно перенаправит меня на маршрут /home

Вот как выглядит моя маршрутизация:

const routes: Routes = [
  {
    path: '',
    redirectTo: 'home',
    pathMatch: 'full'
  },
  {
    path: 'home',
    component: HomeComponent
  },
  {
    path: 'privacy',
    component: PrivacyComponent
  }
  ,
  {
    path: 'imprint',
    component: ImprintComponent
  }
];

Может кто-нибудь объяснить мне, в чем проблема?

1 Ответ

0 голосов
/ 16 мая 2019

Убедитесь, что у вас есть export , добавленный в ваш файл server.ts перед const app.Это была проблема с моим делом.

// Express server
export const app = express();

update

Ошибка объясняется следующим образом: - В файле functions/src/index.ts переменная app требуется через следующий код:

const universal = require(`${process.cwd()}/dist/server`).app;
exports.ssr = functions.https.onRequest(universal);

Но, согласно файлу ${process.cwd()}/dist/server JS (который является переданной версией server.ts), переменная app не является общедоступной, поэтому доступ к ней можно получить в functions/src/index.ts.

Это можно увидеть по тому, как объявлена ​​переменная app:

// Express server
const app = express();

Чтобы решить эту проблему, просто экспортируйте переменную app следующим образом:

// Express server
export const app = express();
...