Я запустил npm run build, поместил его в nodejs express.static, pm2 start app, но не могу получить '/' - PullRequest
0 голосов
/ 12 июня 2019

Я хотел разместить приложение с двумя узлами на одном компьютере с Linux от AWS EC2. Где я могу запустить среду разработки и промежуточную среду. Я заметил, что мне придется использовать разные порты в обоих приложениях, но это не та проблема, с которой я сталкиваюсь.

Используя промежуточную сторону, которая всегда работала с предыдущими блоками, на которой я ее начал, сначала иду, проверяя, работает ли она, прежде чем пробовать разные порты.

У меня есть backend node.js, использующий экспресс и статическую веб-страницу, созданную с помощью Vue CLI. Где экспресс-приложение будет использовать app.use(express.static('static')); для размещения статической веб-страницы. Затем продолжите хостинг на PM2 с pm2 start /directoryToDist/main.js. После запуска демона я выполнил curl http://localhost:80/, но он возвращает HTML-страницу с ошибкой Cannot GET /.

Когда я сделал npm install, npm rebuild и npm build в обоих приложениях. Убедитесь, что папка dist собрана правильно. Затем сделали sudo -i и pm2 start /directoryToDist/main.js. Убедившись, что приложение узла запущено, я сделал ps -ef | grep js, чтобы показать, что оно работает так же. В смонтированном приложении pm2 перезапусков нет, и все прошло гладко. Я сделал curl http://localhost/ после и он вернул Cannot GET /.

Я выполнил передачу работающего приложения в zip-файле в предыдущих окнах, произвел необходимую установку npm и запустил его. Ожидал, что он будет работать как предыдущие блоки, но это не так. показывая ту же ошибку Cannot GET /.

Node js build script

"build": "rimraf dist/ && babel ./ --out-dir dist/ --ignore ./node_modules,./babelrc,./package.json,/.npm-debug-log,./static/* --copy-files"

Vue js build script

"build": "node build/build.js"

Перестройте скрипт, который я использую

cd api
npm run build
cd ..
cd pwa
npm run build
cd ..
sudo rm -rf api/dist/static
sudo mkdir -p api/dist/static
sudo cp -r pwa/dist/* api/dist/static/
sudo chown -R ubuntu.ubuntu *

Дайте мне знать, если вам нужно больше

Фактическим результатом является подача правильного сообщения 200 в curl перед передачей домена на определенный порт.

1 Ответ

0 голосов
/ 13 июня 2019

Нашел решение, которое сработало.

Pm2 не указывал на текущий рабочий каталог. sudo -i и затем его запуск $ pm2 start /home/user/directory будет искать маршруты модулей в папке directory вместо внедренной папки dist.

Итак, решив эту проблему. Сначала нужно пройти через каталог и начать там запуск pm2. $ cd /home/user/directory/dist/ $ pm2 start main.js. Это хорошо послужило приложению узла.

...