Следуя официальному руководству Angular по настройке SSR с использованием сервера Express: https://angular.io/guide/universal#configure-for-universal
В этом руководстве будут настроены следующие пути:
...
const DIST_FOLDER = join(process.cwd(), 'dist');
...
app.set('views', join(DIST_FOLDER, 'browser'));
Это хорошо работает на локальномserver.
Однако после развертывания на сервере (на базе Nginx) появляется сообщение об ошибке:
Ошибка: не удалось найти представление "index" в каталоге представлений "/ home / user_name/ dist / browser "в Function.render (/var/proj_name/server.js:44670:17) в ServerResponse.render (/var/proj_name/server.js:53701:7) в /var/proj_name/server.js: 121: 9 в Layer.handle [как handle_request] (/var/proj_name/server.js:46582:5) в следующем (/var/proj_name/server.js:46330:13) в Route.dispatch (/ var /proj_name / server.js: 46305: 3) в Layer.handle [как handle_request] (/var/proj_name/server.js:46582:5) в /var/proj_name/server.js:45805:22 в параметре (/ var/proj_name/server.js:45878:14) в параметре (/var/proj_name/server.js:45889:14)
Как правильно обработать это, чтобы приложение работало правильнолокально (для разработки) и на рабочем сервере?
РЕДАКТИРОВАТЬ:
Также пытались использовать __dirname
вместо:
app.get('. ', express.static (join (__dirname, 'browser')));
Но это не удается как локально, так и на рабочем сервере:
Ошибка: не удалось найти представление "index" в каталоге представлений "/ browser"
EDIT2:
Мне удалось выполнить эту работу, переместив browser
папка в ~/dist/browser
.Но я не хочу, чтобы приложение работало таким образом.
Похоже, код ошибки находится в server.ts :
// All regular routes use the Universal engine
app.get('*', (req, res) => {
res.render('index', { req });
});
При локальном запускеconst DIST_FOLDER = join(process.cwd(), 'dist');
возвращает правильный вывод.Однако при запуске на реальном сервере (Ubuntu, Nginx) он получает: /home/<user_name>/dist/browser
вместо этого.Использование __dirname
не помогло.
Поэтому нужен какой-то способ убедиться, что res.render('index', { req });
получает правильный ресурс.