Я развернул приложение Angular Universal на рабочем сервере. Я запускаю его с PM2, и он работает. Тем не менее, он не запускает универсальную сторону приложения. Когда я просматриваю исходный текст веб-страницы, я вижу не содержимое, а тег app-root.
Как будто PM2 запустил обычный Angular, выполняя 'ng serve' вместо 'npmзапустите serve: ssr 'для Angular Universal.
Это (часть) моего package.json со сценариями. Должен ли я где-то здесь вставить npm run serve: ssr, чтобы эта команда запускалась, когда я вызываю 'start2 server.js PM2'?
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"compile:server": "webpack --config webpack.server.config.js --progress --colors",
"serve:ssr": "node server",
"build:ssr": "npm run build:client-and-server-bundles && npm run compile:server",
"build:client-and-server-bundles": "ng build --prod && ng run AppName:server:production --bundleDependencies all"
}
Обновление
Поскольку я получал ошибку 403, веб-хост установил корневой каталог документа Apache для папки браузера, потому что именно там находится index.html. Это может быть причиной того, что приложение не загрузит универсальную часть приложения? Потому что он сейчас не видит папку сервера? Вот как выглядит структура моей папки:
domains
- appname.com
- public_html
- browser (=> this is the document root)
- index.html
- .htaccess
- other files...
- server
- server.js
- package.json
И мой файл .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) /index.html [NC,L]
</IfModule>