create-react-app npm run start 在生产模式下。也许不可能?

问题描述 投票:0回答:4

我需要像我一样运行服务器:

npm run start

但是我需要使用生产模式。这可能吗?

在余烬或角形中这是可能的。

create-react-app
怎么办?

我尝试过

npm run start --prod
但什么也没有。

javascript reactjs webpack react-router create-react-app
4个回答
52
投票

最好的选择可能是进行正常的生产构建,然后在本地运行。
首先安装HTTP服务器:

npm install serve -g

然后:

npm run build
serve -s build

默认情况下,它将在端口 5000 上运行,因此您的本地 URL 是 http://localhost:5000


7
投票

要在生产模式下提供应用程序,您需要按照以下步骤操作

  1. 创建生产版本

    npm 运行构建

  2. 全局安装npmserve

    npm i -g 服务

  3. 您现在可以使用静态服务器来提供它

    服务-s构建

您可以在此处查看更多选项。

对于生产中的开发,您可以在 React 应用程序中启用热重载而无需弹出

只需 3 行代码,您就可以打开 HMR,但有一个很大的警告:React 状态和 DOM 状态在重新加载之间不会保留。这有点无赖。

您可以将这些行添加到index.js以打开标准Webpack HMR,该HMR不会在重新加载之间保留状态:

if (module.hot) {
  module.hot.accept();
}

阅读更多相关信息在这里希望它有帮助谢谢!


0
投票

如果您已从

create-react-app
创建了 React 应用程序:

"scripts": {
    "dev": "react-scripts start",
    "start": "concurrently \"npm run server\" \"npm run dev\"",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "server": "pouchdb-server --host 0.0.0.0 -p 10102 -m -d /opt/pouchdb/data/visibility/ -n true",
    "eject": "react-scripts eject"
  },

npm run start
那样启动服务器将始终以开发模式启动服务器。事实上,它会自动将
NODE_ENV
设置为
development
,您可以在代码中使用它来执行以下操作:

 if (process.env.NODE_ENV === "development") {
        await import('rxdb/plugins/dev-mode').then(
            module => addRxPlugin(module.RxDBDevModePlugin)
        );
    }

当您使用以下命令在生产环境中使用

serve
部署应用程序时:

% npm install -g serve
% npm run build
% serve -s build

它会自动将

NODE_ENV
设置为
production

您还可以更新脚本以在

dev
prod
模式下启动服务器,如下所示:

"scripts": {
    "dev": "react-scripts start",
    "start:dev": "concurrently \"npm run server\" \"npm run dev\"",
    "start": "concurrently \"npm run server\" \"serve -s build\"",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "server": "pouchdb-server --host 0.0.0.0 -p 10102 -m -d /opt/pouchdb/data/visibility/ -n true",
    "eject": "react-scripts eject"
  },

现在分别以

dev
prod
模式启动服务器:

% npm run start:dev
% npm run start

-12
投票

是的,您可以在服务器上运行

npm start
命令,但应该有您的 节点模块。如果 node-modules 不存在,那么您可以使用
npm install
命令获取它们。

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