У меня есть приложение Angular 9, и я сгенерирую универсальный файл с помощью "@ ng-toolkit / universal". Создание и обслуживание локального приложения - не проблема, и все работает нормально. Я пытался развернуть приложение ssr на хостинге Firebase с помощью функции (версия узла 10), как описано в этом учебном пособии (метод 2). Развертывание работает нормально, но если я Перезагрузите страницу, я попадаю на страницу входа в учетную запись Google, а затем 403 http error . Проблема всегда возникает только с подчиненными. Например, www.test.com/page1. На самом деле функция хостинга должна обрабатывать все входящие пути, но это работает только с путем root.
firebase. json:
"hosting": {
"public": "public/browser",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"function": "ssr"
}
]
},
functions / index.ts (функция, обрабатывающая запросы http)
import * as functions from 'firebase-functions';
const universal = require(`${process.cwd()}/dist/server/main`).app();
export const ssr = functions.runWith({memory: '512MB'}).region('europe-west1').https.onRequest(universal);
functions / tsconfig. json
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "ESNext",
"baseUrl": ".",
},
"dependencies": {
"escape-html": "^1.0.3"
},
"compileOnSave": true,
"include": [
"src"
]
}
functions / package. json
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "node cp-angular && tsc",
"serve": "npm run build && firebase serve --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "10"
},
"main": "lib/index.js",
"dependencies": {
"@sendgrid/mail": "^6.4.0",
"cors": "^2.8.5",
"firebase-admin": "^8.9.0",
"firebase-functions": "^3.1.0",
"fs-extra": "^8.1.0",
"moment": "^2.24.0"
},
"devDependencies": {
"tslint": "^5.12.0",
"typescript": "^3.2.2"
},
"private": true
}
Папка Firebase Functions включает в себя каталог / dist / server, который содержит основной файл. js с ssrApp, созданным Angular универсальный. Папка publi c проекта Firebase также содержит приложение Angular без компиляции ssr.
Мне также интересно, можно ли настроить, будет ли приложение ssr вызываться только на определенных путях, а обычное клиентское приложение на других путях. Или лучшее решение для размещения приложения ssr. Это моя первая попытка с Angular universal и размещением приложения ssr. К сожалению, я попробовал все в учебниках, и ничто не решило мою проблему. Я надеюсь, что один из вас может помочь мне.
Если требуется несколько файлов. Пожалуйста, дайте мне знать, и я добавлю их.