Не удалось запустить приложение Next.js в службе приложений Azure - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь запустить самое основное приложение Next.js в службе приложений Azure (URL-адрес https://asmkp -rich-test2.azurewebsites.net / ).

Я могу получить базовое приложение Node, работающее нормально, развертываемое из git (репозиторий здесь: https://github.com/Richiban/nextjs-azure-test, ветвь release).

Однако ничего, что я сделаю, не заставит это приложение работать.

Если вы нажмете этот URL, вы увидите:

The page cannot be displayed because an internal server error has occurred.

В выводе std ничего нет, кроме:

Node version: v10.6.0
Done
[5:45:37 PM] Compiling server
[5:45:38 PM] Compiling client
[5:45:38 PM] Compiled server in 1000ms
[5:45:41 PM] Compiled client in 3s
 DONE  Compiled successfully in 3859ms5:45:41 PM

App prepared
Got handle
Ready on http://localhost:8080

и ничего в выводе ошибки, кроме:

(node:22980) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.

Вы можете увидеть мой server.js в репозитории git, но я также включу его здесь для удобства чтения:

const http = require("http");
const next = require("next");
const port = parseInt(process.env.PORT, 10) || 3000;
const dev = process.env.NODE_ENV !== "production";
const app = next({ dev });

console.log("Node version: " + process.version);

app.prepare()
    .then(() => {
        console.log("App prepared");

        const handle = app.getRequestHandler();

        console.log("Got handle");

        http.createServer(function(req, res) {
            console.log(`Processing incoming request`);

            try {
                handle(req, res).catch(function(e) {
                    console.log(`Error caught3: ` + e);
                    console.log(e);
                });
                
                console.log(`Incoming request done`);
            } catch (e) {
                console.log(`Error caught: ` + e);
                console.log(e);
            }
        }).listen(port);

        console.log(`> Ready on http://localhost:${port}`);
    })
    .catch(function(e) {
        console.log(`Error caught2: ` + e);
        console.log(e);
    });

console.log("Done");

Как вы, вероятно, можете видеть по количеству логов, которые я там заполнил, я нахожусь в своем уме сегодня.

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

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 08 января 2019

DeprecationWarning - красная сельдь. Вы видите эту общую ошибку, потому что iisnode не может связаться с процессом узла.

process.env.PORT - это на самом деле имя канала при использовании iisnode, поэтому происходит сбой parseInt и используется резервный порт 3000. Это означает, что ваше приложение next.js прослушивает неверный порт. Обновите строку, где вы устанавливаете номер порта соответственно:

const port = process.env.PORT;
...