У меня есть приложение Angular 8 с Universal, которое я хочу развернуть на общем рабочем сервере веб-хостинга. Я заранее проконсультировался с веб-хостингом, и они сказали, что на их общем веб-хостинге возможно размещение универсального углового веб-приложения. Однако, что бы я ни делал, я не могу заставить сайт работать. Когда я захожу на сайт, я вижу сообщение: «Этот сайт недоступен»
То, что я сделал до сих пор:
- Сборка проекта с помощью npm run build:ssr, создавший папку dist с папкой браузера и сервера и файлом server.js
- Переместите папку dist на сервер внутри папки public_html. Затем получил доступ к серверу через SSH и выполнил следующие действия:
- install Node.js и npm
- npm install
- npm install pm2 -g
- pm2 start dist/server.js
pm2 запускается без проблем.
Это некоторые файлы проекта. Если что-то отсутствует, пожалуйста, спросите, и я добавлю их к вопросу.
Часть package.json со скриптами:
"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 dist/server",
"build:ssr": "npm run build:client-and-server-bundles && npm run compile:server",
"build:client-and-server-bundles": "ng build --prod && ng run ProjectName:server:production --bundleDependencies all"
},
server.js из сборки (толькоэкспресс-часть, поскольку в ней более 25 000 строк):
const app = express__WEBPACK_IMPORTED_MODULE_1__();
const PORT = process.env.PORT || 4000;
const DIST_FOLDER = Object(path__WEBPACK_IMPORTED_MODULE_2__["join"])(process.cwd(), 'dist/browser');
// * NOTE :: leave this as require() since this file is built Dynamically from webpack
const { AppServerModuleNgFactory, LAZY_MODULE_MAP, ngExpressEngine, provideModuleMap } = __webpack_require__(144);
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
app.engine('html', ngExpressEngine({
bootstrap: AppServerModuleNgFactory,
providers: [
provideModuleMap(LAZY_MODULE_MAP)
]
}));
app.set('view engine', 'html');
app.set('views', DIST_FOLDER);
// Example Express Rest API endpoints
// app.get('/api/**', (req, res) => { });
// Serve static files from /browser
app.get('*.*', express__WEBPACK_IMPORTED_MODULE_1__["static"](DIST_FOLDER, {
maxAge: '1y'
}));
// All regular routes use the Universal engine
app.get('*', (req, res) => {
res.render('index', { req });
});
// Start up the Node server
app.listen(PORT, () => {
console.log(`Node Express server listening on http://localhost:${PORT}`);
});
Согласно нескольким ответам на SO или в другом месте, вы просто «копируете», вставляете папку dist на сервер, запускаете pm2 и ваш веб-сайт предположительно работает. Я чувствую, что чего-то не хватает, чтобы заставить его работать.
Кто-нибудь знает, как правильно развернуть сайт Angular Universal на рабочем сервере?