gpt4 book ai didi

node.js - 为什么我的 ReactJS 应用程序在本地运行而不是在 Azure 中运行?

转载 作者:行者123 更新时间:2023-12-03 02:31:17 24 4
gpt4 key购买 nike

我有一个 ReactJS 应用程序,它作为假 API 连接到 json-server。我已将其部署到 Azure using VSCode和 F1 免费 Linux 层。

当我使用 npm start 在本地运行它时,一切正常。

  "scripts": {
"start": "npm-run-all --parallel mock web",
"web": "cross-env PORT=8080 react-scripts start",
"mock": "node index.js"
},

index.js 包含 json-server 配置等,因为它比 json-server --watch db.json 多一点>

我正在使用包npm-run-all同时运行json-server和react应用程序。

这在本地工作正常,但是当我尝试将其部署到 Azure 时,容器无法启动:

INFO  - Starting container for site
INFO - docker run -d -p 7307:8080 --name demo_0_8cd -e WEBSITE_SITE_NAME=demo -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=demo.azurewebsites.net -e WEBSITE_INSTANCE_ID=8fe4512f9f -e HTTP_LOGGING_ENABLED=1 appsvc/node:12-lts_20200918.1
INFO - Initiating warmup request to container demo_0_8cd for site demo
ERROR - Container demo_0_8cd for site demo has exited, failing site start
ERROR - Container demo_0_8cd didn't respond to HTTP pings on port: 8080, failing site start. See container logs for debugging.
INFO - Stopping site demo because it failed during startup.

我在容器日志中看不到太多内容来调试它。

我也无法判断 Azure 使用什么命令来启动,因为它在日志中显示的只是 docker run

  • 它正在调用npm start吗? (参见编辑 - tldr:是)
  • 为什么它可以在本地运行,但不能在 Azure 中运行?
  • 为什么它不响应 ping?
  • 这与这是一个 React 应用程序而不是“只是”一个 Node 应用程序有关吗?

编辑:

本教程生成的 docker 容器的脚本位于 /opt/startup 中。

模板化的是/opt/startup/init_container.sh,其中包含:

STARTUP_COMMAND_PATH="/opt/startup/startup.sh"
STARTUPCOMMAND=$(cat $STARTUP_COMMAND_PATH)
echo "Running $STARTUPCOMMAND"
$STARTUP_COMMAND_PATH

/opt/startup/startup.sh 包含

# Enter the source directory to make sure the script runs where the user expects
cd "/home/site/wwwroot"
npm start

演示应用程序的 package.json 中的启动脚本具有 "start": "node ./bin/www"

然后有:

var http = require('http');
var server = http.createServer(app);
server.listen(port);

所以这里的关键是它执行npm start来运行,然后创建一个nodejs服务器来为端口8080上的应用程序提供服务。

我的应用程序中的 npm start 最终调用 react-scripts start,它使用 WebpackDevServer

虽然您不应该使用开发服务器进行生产,但这是否也意味着您由于某种原因不能在服务器上使用它?

这只是一个测试/演示,旨在让我熟悉 Azure,不是生产。

最佳答案

最终结果是 npm run 正在运行 WebpackDevServer。

这不是为生产而设计的,因此我们需要另一种在 Azure 上运行的方式。

将 Azure webapp 启动命令更改为 npxserve -l 8080 build 将在 Azure 中运行 ReactJS 应用程序。

注意:这个答案解释了如何运行它,但没有解释为什么

查看此other question为什么。

关于node.js - 为什么我的 ReactJS 应用程序在本地运行而不是在 Azure 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65067428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com