create-react-app 的开发服务器不会自动刷新

IT技术 javascript reactjs create-react-app
2021-01-16 22:08:24

我正在使用 create-react-app 学习有关 React教程应用由create-react-app v1.3.0创建

create-react-app my-app

开发服务器由

npm start

多次更改代码后,浏览器不会实时更新/热重新加载更改。刷新浏览器无济于事。只有停止开发服务器并重新启动它才能捕获对代码的新更改。

6个回答

我正在阅读很多不必要的东西。

我正在使用React 17

我的问题是页面只是添加了新组件,但浏览器没有刷新页面。

如果您的终端是Compiling...,然后您在浏览器上没有看到更改,您应该尝试.env在项目的根路径中添加一个文件并添加FAST_REFRESH=false.

默认情况下,热刷新已替换为快速刷新。

这也是给我的答案!非常反直觉,标记“Fast_Refresh=false”会导致它自己快速刷新
2021-03-14 22:08:24
谢谢,这在 React 17.0.1 上对我有用
2021-03-16 22:08:24
添加.env文件后记得重新启动应用程序,否则将无法立即运行。
2021-03-25 22:08:24
这适用于我在带有 React 17.0.1 的 Windows 上。谢谢!
2021-03-26 22:08:24
文档在这里 - create-react-app.dev/docs/advanced-configurationFAST_REFRESH - 必须被覆盖为 false 否则浏览器不会刷新某些更改。来自文档 - “当设置为 false 时,禁用对快速刷新的实验性支持以允许您实时调整组件而无需重新加载页面?
2021-04-12 22:08:24

您是否看过用户指南的“疑难解答”部分?
它描述了此问题的一些常见原因

当您在npm start运行时保存文件时,浏览器应使用更新后的代码刷新。

如果这没有发生,请尝试以下解决方法之一:

  • 如果您的项目在 Dropbox 文件夹中,请尝试将其移出。
  • 如果观察者没有看到被调用的文件,index.js而您通过文件夹名称引用它,则由于 Webpack 错误,您需要重新启动观察者
  • 一些像 Vim 和 IntelliJ 这样的编辑器有一个“安全写入”功能,目前会破坏观察者。您将需要禁用它。按照“在 vim 中禁用交换文件创建”中的说明进行操作
  • 如果您的项目路径包含括号,请尝试将项目移动到没有括号的路径。这是由Webpack watcher bug引起的
  • 在 Linux 和 macOS 上,您可能需要调整系统设置以允许更多观察者。
  • 如果项目在虚拟机中运行,例如(Vagrant 配置的)VirtualBox,.env如果它不存在,请在项目目录中创建一个文件,然后添加CHOKIDAR_USEPOLLING=true到其中。这可确保下次运行时npm start,观察者在 VM 内根据需要使用轮询模式。

如果这些解决方案都没有帮助,请在此线程中发表评论

我希望这有帮助!

嗨,丹,你能解释一下真正的 chokidar 是什么吗?
2021-03-26 22:08:24
> 在 Linux 和 macOS 上,您可能需要调整系统设置以允许更多观察者。这就是我的问题。我已经关注blog.jetbrains.com/idea/2010/04/...来修复它(即使我不使用 IntelliJ 也有帮助)
2021-03-28 22:08:24
谢谢你,你死定了。我正在使用 Vim。设置set backupcopy=yes解决了问题,如提供的文档链接中所述。
2021-04-01 22:08:24
创建 .env 文件对我有用,因为我在 VM 上工作
2021-04-02 22:08:24
我正在使用 VirtualBox 和这个解决方案“如果它不存在,则在您的项目目录中创建 .env 文件,并将 CHOKIDAR_USEPOLLING=true 添加到它”,对我有用。太感谢了
2021-04-11 22:08:24

.env在项目的基本路径和 add 中添加一个文件FAST_REFRESH=false

这将禁用快速刷新并返回到热重载。

如果您不想将 .env 文件添加到您的基本路径,您可以选择以下选项:

  • "start": "FAST_REFRESH=false react-scripts start", 在 package.json 中。
  • FAST_REFRESH=false npm run start, 在命令行上。
  • FAST_REFRESH=false,将其导出为环境变量。

react 17

react脚本 4

这在 Win10 上运行良好。要在 Win10 中创建 .env 文件,请创建一个新文件并将其重命名为 <blank>.env
2021-03-26 22:08:24
正确答案 - MacOSX React 应用typescript
2021-03-28 22:08:24
对我有用(Ubuntu 20.04.2 和 Firefox 84.02)
2021-03-29 22:08:24
这最终适用于我的 Mac。其他一切都没有。只有添加这个有帮助。有人知道这个的根本原因吗?
2021-04-01 22:08:24
这对我也有用,也适用于在 0.0.0.0 上监听的无头云
2021-04-07 22:08:24

您是否尝试过 npm start 具有超级用户权限?我的项目有问题,我是这样解决的。

$sudo bash
#npm  start
非常感谢您的努力。经过数小时的调试,它解决了我的问题
2021-03-17 22:08:24
谢谢你的回答。这没有用。不在 sudo 中,也不在 root 用户下。
2021-03-19 22:08:24
如果npm start需要超级用户权限,则有问题(或者您正在尝试绑定到特权端口)。在以超级用户身份运行之前,请务必找出您需要这样做的原因。
2021-03-24 22:08:24

在 WSL2 为我工作中,“如果项目在虚拟机中运行,例如(Vagrant 配置的)VirtualBox,.env如果它不存在,请在项目目录中创建一个文件,然后添加CHOKIDAR_USEPOLLING=true到其中。这确保下次您run npm start,观察者根据需要在 VM 内使用轮询模式。”

或者只是运行: $ CHOKIDAR_USEPOLLING=true npm start

我正在使用 WLS,这对我来说是解决方案。干杯
2021-03-28 22:08:24
这是对我的修复,但我实际上需要将此 env 配置添加到我的docker-compose.yml所以它最终CHOKIDAR_USEPOLLING: 'true'在该environment部分
2021-04-11 22:08:24