【问题标题】:Hot Reload is not working in my React App热重载在我的 React 应用程序中不起作用
【发布时间】:2021-04-03 08:02:48
【问题描述】:

我已经使用 npx create-react-app 创建了这个应用程序。在此之后,我删除了 src 文件夹中除 index.js 之外的所有文件。然后热重载不起作用。我已经转到 chrome 并手动刷新页面以查看更改。 这是我的 index.js 文件。

import React from 'react';
import ReactDom from 'react-dom';

function Greeting() {
  return (
    <div>
      <h1>hello World</h1>
      <ul>
        <li>Click Here</li>
      </ul>
    </div>
  );
}

ReactDom.render(<Greeting />, document.getElementById('root'));

Package.json文件

{
  "name": "tutorial",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-scripts": "4.0.1",
    "web-vitals": "^0.2.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

【问题讨论】:

  • 有时确实会发生这种情况。执行 npm install 并尝试添加一些代码。然后按CTRL+S查看页面是否更新
  • 刷新编辑器,重新启动 npm,清除浏览器中网站的缓存以及其他一些步骤。应该没问题
  • 你有 React-17。做一件事在你的 package.json() 中做这些更新,然后做 npm install, "react": "^16.3.1", "react-dom": "^16.13.1",

标签: javascript reactjs webpack jsx


【解决方案1】:

package.json 文件中的 react-scripts 版本 4.0.1 存在问题。 我已经用 'react-scripts' : '3.4.4' 替换了它,现在它可以工作了。 欲了解更多信息:https://github.com/facebook/create-react-app/issues/9984

【讨论】:

    【解决方案2】:

    这可能是由于您的文件系统、文件扩展名或 Create-React-App 默认 webpack/项目配置。您不一定要更改所有这些,因为热重载应该是开箱即用的,如果项目刚刚开始,更是如此。

    例如,我曾经在安装 Typescript (^17.0.1) 时遇到问题,其中一些 扩展名为 .ts 的文件不会触发热重载。我不得不更改为 .tsx 并添加一个 React 导入。 同样的情况也可能发生在 .js 和 .jsx 文件中。

    如果您的文件系统(Unix、Mac)出现问题,您可以尝试 React 配置 (FAST_REFRESH=false) here... 或更改文件夹名称,但我对此并没有太多了解.

    【讨论】:

      【解决方案3】:

      有一个问题 - https://github.com/facebook/create-react-app/issues/9904

      一种解决方法是在 index.js 中添加以下代码以启用重新加载

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

      您必须在进行此更改后重新启动服务器

      【讨论】:

        【解决方案4】:

        React 17 版本的某些浏览器存在热重载问题。

        以下是解决此问题的最简单方法:

        • 转到 package.json 并替换 react、react-domreact-scripts 依赖项如下:

          "react": "^16.13.1"  
          "react-dom": "^16.13.1"  
          "react-scripts": "3.4.3"
          
        • 删除node_modules 文件夹。

        • 运行npm install(它将重新安装所有依赖项)

        • 使用 npm start 开始您的 CRA 项目

        这将解决热重载问题。

        【讨论】:

          【解决方案5】:

          为了解决热重载/fast_refresh 中的问题,我只需在 package.json 中添加 CHOKIDAR_USEPOLLING=true

          "scripts": {
                  "start": "CHOKIDAR_USEPOLLING=true react-scripts start", //add this line
                  "build": "react-scripts build",
                  "test": "react-scripts test",
                  "eject": "react-scripts eject"
          }
          

          【讨论】:

            【解决方案6】:

            虽然上述解决方案也有好处,但对大多数人来说有效的另一种方法是在您的项目中创建一个 .env 文件夹。

            并在那里使用以下属性。

            FAST_REFRESH = false
            

            添加上述内容后,您必须重新启动服务器

            【讨论】:

              【解决方案7】:

              将您的文件 index.js 更改为 index.jsx。它对我有用。

              【讨论】:

              • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
              【解决方案8】:

              如果您的页面没有自动加载,那么您必须执行以下步骤:

              1. 添加.env文件
              2. .env文件中添加SKIP_PREFLIGHT_CHECK=true

              【讨论】:

                猜你喜欢
                • 2023-01-01
                • 2022-12-13
                • 2017-05-13
                • 2020-02-18
                • 2019-05-25
                • 2018-10-16
                • 1970-01-01
                • 1970-01-01
                • 2017-06-20
                相关资源
                最近更新 更多