Reactjs 配置如何在生产中启动React应用程序

Reactjs 配置如何在生产中启动React应用程序,reactjs,npm,create-react-app,Reactjs,Npm,Create React App,create react app和npmnoob在这里,我在部署到生产环境时遇到了一些问题。当我启动我的应用程序时,我想启动一个特定的js文件,并运行正常的react脚本start。因此,在我的package.json中,我有以下内容 "scripts": { "start": "node -r esm src/server.js & react-scripts start", ... } 当我运行npmstart时,它工作得很好,两个脚本都在本地执行并启动运行 我粗略的阅读似

create react app
npm
noob在这里,我在部署到生产环境时遇到了一些问题。当我启动我的应用程序时,我想启动一个特定的js文件,并运行正常的
react脚本start
。因此,在我的
package.json
中,我有以下内容

"scripts": {
  "start": "node -r esm src/server.js & react-scripts start",
  ...
}
当我运行
npmstart
时,它工作得很好,两个脚本都在本地执行并启动运行

我粗略的阅读似乎表明,
npm start
只是用于开发。在生产中,将使用
build/
文件夹并。。。我不知道它是怎么运行的。本地测试,运行
npm run build
后,创建
build/
文件夹。然后运行
service-s build
,执行一些操作,但这不是我的
npm start
脚本。看起来只是
react脚本启动
。尝试部署到几个实际生产服务器(如Firebase和Netlify)的行为方式相同

那么生产构建是如何开始的呢?我如何配置它,使其表现得像我的开发构建一样

我觉得我一定是误解了一些基本的东西,因为我在网上找不到任何解释,但如果有任何帮助,我将不胜感激


如果您对我为什么会有这种奇怪的设置感兴趣,我将尝试使用多人服务器进行部署

使用
npm start
的原因是,您可以动态启动本地web服务器,并与
nodemon
和其他产品配合使用,可以轻松查看源代码的更改,就好像它正在生产中一样


npm build
将源代码传输到适合生产的轻量级延迟加载包中。构建完成后,您可以使用web服务器托管
build/index.html
并从那里访问站点。您使用什么来承载它取决于您(最常见的是
nginx
,但您可以使用类似于
apache
node
的东西,就像您在
service-s build中提到的那样)

运行
npm run build
时,所有代码都打包到一个静态站点中。这就是build文件夹中的内容。因此,如果您只是进入build并打开index.html,那么该站点应该按预期显示。“让服务器运行”只意味着提供index.html文件。啊,好吧,我想我现在明白它是如何正常工作的了。是因为在我的
package.json
中,
main
src/index.js
,该文件正在运行,它将其组件呈现在
index.html
中的
根“
元素上吗?因此,如果我还想运行
src/server.js
,简单的方法是使用
main
作为
src/server.js
创建一个单独的项目?但是我的
server.js
需要在同一个项目中找到的代码,所以我试图避免构建会处理所有客户端内容,您只需要托管目录。因为您使用的是MERN堆栈,所以大多数人将有两个独立的项目,客户机和服务器。就我个人而言,对于较小的项目,我不会真的担心这一点。在生产环境中,除了托管构建目录外,还需要节点始终运行
src/server.js
(如果崩溃,则重新启动)。您可以使用类似于pm2的