Razzle: Contoh penerapan di Azure?

Dibuat pada 1 Feb 2019  ·  4Komentar  ·  Sumber: jaredpalmer/razzle

Saya mencoba menerapkan aplikasi razzle ke Layanan Aplikasi Azure tetapi saya mengalami masalah saat menjalankan server. Saya membangun aplikasi dan mendapatkan folder build. Kemudian, saya menggunakan file web.config ini dan mengubah titik masuk menjadi _build/server.js_. Aplikasi tampaknya berjalan dengan baik, karena saya memeriksa log dan klasik

_🚀 dimulai_

muncul. Ketika saya pergi ke url aplikasi, tidak ada respons apa pun. Hanya kesalahan 500 saat permintaan habis.

Saya memeriksa build di mesin lokal saya berjalan

node build/server.js

dan semuanya berjalan seperti yang diharapkan.

Semoga Anda bisa membantu.

Salam.

stale

Komentar yang paling membantu

Hai,

Ini kemungkinan besar terkait dengan #356 (variabel lingkungan seperti PORT sedang digarisbawahi selama waktu pembuatan). IISNode menentukan pipa bernama untuk mendengarkan melalui PORT , tetapi ini tidak diambil oleh server, karena Razzle akan menyejajarkan akses ke process.env.PORT (mungkin hingga 3000) selama waktu pembuatan.

Kami menggunakan solusi ini di razzle.config.js untuk mencegah inlining PORT :

module.exports = {
    ...
    modify: (config, { target, dev }, webpack) => {
        const appConfig = Object.assign({}, config);

        // <strong i="13">@BUG</strong>: Do not inline certain env vars; https://github.com/jaredpalmer/razzle/issues/356
        if (target === 'node') {
            const idx = appConfig.plugins.findIndex(plugin => plugin.constructor.name === 'DefinePlugin');
            const { definitions } = appConfig.plugins[idx];
            const newDefs = Object.assign({}, definitions);

            delete newDefs['process.env.PORT'];
            delete newDefs['process.env.HOST'];
            delete newDefs['process.env.PUBLIC_PATH'];

            appConfig.plugins = [].concat(appConfig.plugins);
            appConfig.plugins[idx] = new webpack.DefinePlugin(newDefs)
        }

        return appConfig;
    },
};

Semua 4 komentar

Hai,

Ini kemungkinan besar terkait dengan #356 (variabel lingkungan seperti PORT sedang digarisbawahi selama waktu pembuatan). IISNode menentukan pipa bernama untuk mendengarkan melalui PORT , tetapi ini tidak diambil oleh server, karena Razzle akan menyejajarkan akses ke process.env.PORT (mungkin hingga 3000) selama waktu pembuatan.

Kami menggunakan solusi ini di razzle.config.js untuk mencegah inlining PORT :

module.exports = {
    ...
    modify: (config, { target, dev }, webpack) => {
        const appConfig = Object.assign({}, config);

        // <strong i="13">@BUG</strong>: Do not inline certain env vars; https://github.com/jaredpalmer/razzle/issues/356
        if (target === 'node') {
            const idx = appConfig.plugins.findIndex(plugin => plugin.constructor.name === 'DefinePlugin');
            const { definitions } = appConfig.plugins[idx];
            const newDefs = Object.assign({}, definitions);

            delete newDefs['process.env.PORT'];
            delete newDefs['process.env.HOST'];
            delete newDefs['process.env.PUBLIC_PATH'];

            appConfig.plugins = [].concat(appConfig.plugins);
            appConfig.plugins[idx] = new webpack.DefinePlugin(newDefs)
        }

        return appConfig;
    },
};

Hai,

Ini kemungkinan besar terkait dengan #356 (variabel lingkungan seperti PORT sedang digarisbawahi selama waktu pembuatan). IISNode menentukan pipa bernama untuk mendengarkan melalui PORT , tetapi ini tidak diambil oleh server, karena Razzle akan menyejajarkan akses ke process.env.PORT (mungkin hingga 3000) selama waktu pembuatan.

Kami menggunakan solusi ini di razzle.config.js untuk mencegah inlining PORT :

module.exports = {
    ...
    modify: (config, { target, dev }, webpack) => {
        const appConfig = Object.assign({}, config);

        // <strong i="14">@BUG</strong>: Do not inline certain env vars; https://github.com/jaredpalmer/razzle/issues/356
        if (target === 'node') {
            const idx = appConfig.plugins.findIndex(plugin => plugin.constructor.name === 'DefinePlugin');
            const { definitions } = appConfig.plugins[idx];
            const newDefs = Object.assign({}, definitions);

            delete newDefs['process.env.PORT'];
            delete newDefs['process.env.HOST'];
            delete newDefs['process.env.PUBLIC_PATH'];

            appConfig.plugins = [].concat(appConfig.plugins);
            appConfig.plugins[idx] = new webpack.DefinePlugin(newDefs)
        }

        return appConfig;
    },
};

Saya mencoba konfigurasi ini tetapi ketika saya mencoba perintah 'npm run start:prod ' di lokal saya, saya mendapatkan kesalahan bahwa assets.json tidak ditemukan. bisa tolong saran dalam hal ini?

@vbutani
Apakah ini berfungsi jika Anda mengomentari baris tempat kami menghapus 'process.env.PUBLIC_PATH' dari definisi?

@vbutani
Apakah ini berfungsi jika Anda mengomentari baris tempat kami menghapus 'process.env.PUBLIC_PATH' dari definisi?

Terima kasih @fabianishere atas respon cepatnya. Buruk saya, saat melakukan perubahan kode yang disarankan, saya menemukan masalah kode khusus saya dalam metode modifikasi.
Kode Anda benar-benar berfungsi dengan baik tanpa perubahan apa pun!! Konfigurasi khusus yang Anda buat menggantikan nilai PORT yang dikodekan dengan proses.env.PORT di server.js yang dibundel.

Terima kasih banyak. :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

krazyjakee picture krazyjakee  ·  3Komentar

knipferrc picture knipferrc  ·  5Komentar

corydeppen picture corydeppen  ·  3Komentar

MaxGoh picture MaxGoh  ·  4Komentar

dizzyn picture dizzyn  ·  3Komentar