Как развернуть приложение SSR React в службах приложений Azure? - PullRequest
0 голосов
/ 01 февраля 2019

Я устанавливаю простое приложение, используя razzle и React.Он отлично работает на моей локальной машине, даже в сборке.Когда я пытаюсь развернуть приложение в Azure, я сталкиваюсь с ошибкой 500. Я проверил журналы, и приложение действительно запускается, но сервер никогда не достигает ('/' route).

Я пробовал это web.config файл и протестировал его с помощью простого приложения Express, и он прекрасно работает, но он не работает для меня.

Это мой server.js

const server = express();
 server
   .disable('x-powered-by')
   .use(express.static(process.env.RAZZLE_PUBLIC_DIR))
   .get('/*', (req, res) => {
    console.log("This should trigger")

И это index.js

import http from 'http';

let app = require('./server').default;

const server = http.createServer(app);

let currentApp = app;

server.listen(process.env.PORT || 3000, error => {
  if (error) {
    console.log(error);
   }

   console.log('? started in port ', process.env.PORT || 3000);
 });

Этот код компилируется в один файл server.js (который я уже указал в моем файле web.config)

Я проверяю логи и этов журналах появляется строка

console.log('? started in port ', process.env.PORT || 3000);

Но не эта

console.log("This should trigger")

Ни содержимого, ни ответа от сервера.

Надеюсь, вы могли бы помочь.Это сводит меня с ума.

1 Ответ

0 голосов
/ 05 февраля 2019

Я пытался следовать README GitHub repo jaredpalmer/razzle, чтобы построить и запустить простой проект my-app, затем обнаружил, что команда npm run build скомпилирует значение кода process.env.PORT || 3000 изsrc/index.js в build/server.js, как показано на рисунке ниже.

enter image description here

Примечание: если я установлю PORT порт среды со значением 5000 через командуset PORT=5000 в Windows или export PORT=5000 в Linux, порт "3000" выше в build/server.js будет вместо "5000", а не process.env.PORT кода.

Однако для запуска Node.jsприложением в Azure WebApp, вы должны использовать process.env.PORT для чтения порта из переменной среды PORT, затем для загрузки всех файлов в build и web.config в Azure, чтобы приложение использовало значение PORT переменная окружения, установленная WebApp для работы.

Итак, чтобы решить эту проблему, вам нужно вручную заменить "3000" на process.env.PORT через поиск "3000" или значение PORT environment, как показано на рисункениже, затем выполнить развертывание.

enter image description here

...