如何部署SSR在Azure的应用程序服务应用程序做出反应?

问题描述 投票:2回答:1

我安装使用razzle和反应的简单应用。它完美的作品我的本地机器,甚至生产版本上。当我尝试部署的应用天青我遇到错误500.我查了日志和应用程序确实启动,但服务器永远达不到(“/”路线)。

我想这web.config文件,并用一个简单的快速应用程序测试,它的伟大工程,但它并没有为我工作。

这是我的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")

无论任何内容或来自服务器的响应。

希望你能有所帮助。这是推动我坚果。

reactjs azure azure-web-sites serverside-rendering
1个回答
0
投票

我试图按照GitHub库jaredpalmer/razzle的README构建和运行简单的项目my-app,然后发现了这个命令npm run build将编译process.env.PORT || 3000的代码src/index.js的价值为build/server.js如下图所示。

enter image description here

注:如果我将通过命令PORT5000在Windows或set PORT=5000在Linux上export PORT=5000环境端口,该端口"3000"以上build/server.js将代替"5000",不process.env.PORT代码。

然而,运行在Azure上的WebApp使Node.js应用程序,你必须使用process.env.PORT来读取环境变量PORT的端口,然后和build中的所有文件的web.config上传文件到Azure中要使用PORT环境价值的应用变量由Web应用程序设置工作。

因此,要解决这个问题,需要通过搜索"3000"process.env.PORT环境的价值"3000"手动更换PORT,如下图所示,然后做了部署。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.