razzleアプリをAzureApp Serviceにデプロイしようとしていますが、サーバーの実行に問題があります。 アプリをビルドして、ビルドフォルダーを取得しました。 次に、このweb.configファイルを使用して、エントリポイントを_build /server.js_に変更しました。 ログとクラシックをチェックしたので、アプリは正常に動作しているようです
_🚀開始_
が表示されます。 アプリのURLにアクセスしても、何の応答もありません。 リクエストがタイムアウトしたときのエラー500。
実行中のローカルマシンでビルドを確認しました
node build/server.js
そして、すべてが期待どおりに機能します。
あなたが助けることができることを願っています。
よろしく。
こんにちは、
これはおそらく#356に関連しています( PORT
などの環境変数はビルド時にインライン化されます)。 IISNodeは、 PORT
を介してリッスンする名前付きパイプを指定しますが、Razzleはビルド時にprocess.env.PORT
(おそらく3000)へのアクセスをインライン化するため、これはサーバーによって取得されません。
私たちは、この回避策を使用razzle.config.js
インライン化を防止するために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;
},
};
こんにちは、
これはおそらく#356に関連しています(
PORT
などの環境変数はビルド時にインライン化されます)。 IISNodeは、PORT
を介してリッスンする名前付きパイプを指定しますが、Razzleはビルド時にprocess.env.PORT
(おそらく3000)へのアクセスをインライン化するため、これはサーバーによって取得されません。私たちは、この回避策を使用
razzle.config.js
インライン化を防止するために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; }, };
この構成を試しましたが、ローカルでコマンド 'npm run start:prod 'を試すと、assets.jsonが見つからないというエラーが発生します。 これでアドバイスしてもらえますか?
@vbutani
定義から「process.env.PUBLIC_PATH」を削除した行をコメントアウトすると機能しますか?
@vbutani
定義から「process.env.PUBLIC_PATH」を削除した行をコメントアウトすると機能しますか?
迅速な対応をしてくれた@fabianishereに感謝します。 悪いことに、提案されたコード変更を行っているときに、modifyメソッドにカスタムコードの問題が見つかりました。
あなたのコードは変更なしで完全にうまく機能します!! 作成したカスタム構成は、ハードコードされたPORT値をバンドルされたserver.jsのprocess.env.PORTに置き換えます。
どうもありがとう。 :)
最も参考になるコメント
こんにちは、
これはおそらく#356に関連しています(
PORT
などの環境変数はビルド時にインライン化されます)。 IISNodeは、PORT
を介してリッスンする名前付きパイプを指定しますが、Razzleはビルド時にprocess.env.PORT
(おそらく3000)へのアクセスをインライン化するため、これはサーバーによって取得されません。私たちは、この回避策を使用
razzle.config.js
インライン化を防止するためにPORT
: