Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/45.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何部署ReactJs+;远程服务器上的节点应用程序?_Node.js_Reactjs_Deployment - Fatal编程技术网

Node.js 如何部署ReactJs+;远程服务器上的节点应用程序?

Node.js 如何部署ReactJs+;远程服务器上的节点应用程序?,node.js,reactjs,deployment,Node.js,Reactjs,Deployment,假设我没有使用任何第三方服务,只是一个专用服务器,我该如何做呢?我想举个例子。其中有一个构建文件夹。我知道,在执行npm run build之后,我可以将其内容复制粘贴到远程服务器的public_html中,但是还有一个/server文件夹正在使用节点,可能与数据库交互,不能与其余的build js一起放入 我最好的猜测是,我将npm运行build并将build文件夹的内容ftp到远程服务器上的public\u html,然后我将服务器文件夹的内容放到另一个子域上,然后ssh到服务器中,并在所述

假设我没有使用任何第三方服务,只是一个专用服务器,我该如何做呢?我想举个例子。其中有一个构建文件夹。我知道,在执行
npm run build
之后,我可以将其内容复制粘贴到远程服务器的
public_html
中,但是还有一个
/server
文件夹正在使用节点,可能与数据库交互,不能与其余的build js一起放入


我最好的猜测是,我将
npm运行build
并将
build
文件夹的内容ftp到远程服务器上的
public\u html
,然后我将服务器文件夹的内容放到另一个子域上,然后ssh到服务器中,并在所述子域中执行
npm start
?或者可能将其放在
public\u html
的子文件夹中。我来自php背景,习惯于香草js+php,因此非常感谢您的任何建议。

首先通过运行

npm run build
然后在app.js/index.js的节点端添加这些代码行

app.use(express.static("<your_react_app_folder>/build"));
if (process.env.NODE_ENV === "production") {
  const path = require("path");
  app.get("/*", (req, res) => {
    res.sendfile(path, resolve(__dirname, "../<your_react_app_folder>", "build", "index.html"));
  });
}

app.use(express.static(“/build”);
if(process.env.NODE_env==“生产”){
常量路径=要求(“路径”);
应用程序获取(“/*”,(请求,请求)=>{
res.sendfile(路径,解析(_dirname,“../”,“build”,“index.html”);
});
}
然后将其部署到heroku/远程服务器


注意:请记住从.gitignore文件中删除/生成行

是的,如果有单独的子域“服务器”、“api”或其他什么,请在远程服务器上运行该子域。构建文件夹将只是一个ui,您可以将其推送到“dashboard”和“ui”文件夹。我觉得我看到的大多数axios/fetch请求的url都是
/api/users
,而不是
https://api.something.com:3000/users
查看它,我发现了这个,我想我可以将
/api
子文件夹重定向到运行节点服务器的url?在这种情况下,服务器不必位于其他服务器上subdomain@Dan185这正是我们正在使用的服务器域的代理点,所以当我们在客户端为/api/用户发出请求时,它实际上是在使用axios请求和获取数据,并将其提供给react。appI将要设置一个代理,然后允许前端子域与另一子域上的api通信