我正在使用create-react-app跟随一个React的教程。应用程序由create-react-appv1.3.0创建。
create-react-app my-app
开发服务器由运行
npm start
经过多次修改代码后,浏览器未能实时更新/热加载更改。刷新浏览器也没有帮助。只有停止开发服务器并重新启动才能捕获代码的新更改。
我正在使用create-react-app跟随一个React的教程。应用程序由create-react-appv1.3.0创建。
create-react-app my-app
开发服务器由运行
npm start
经过多次修改代码后,浏览器未能实时更新/热加载更改。刷新浏览器也没有帮助。只有停止开发服务器并重新启动才能捕获代码的新更改。
我读了很多不必要的东西。
我正在使用 React 17。
我的问题是页面只添加新组件但浏览器没有刷新页面。
如果你的终端显示 Compiling...
,然后在浏览器上看不到变化,你应该尝试在项目的根路径中添加一个 .env
文件,并添加 FAST_REFRESH=false
。
默认情况下,热更新被快速更新所取代。
.env
文件后重新启动应用程序,否则它将无法立即生效。 - ikhvjs当您在运行
npm start
时保存文件时,浏览器应该会使用更新后的代码刷新。如果没有刷新,请尝试以下解决方法之一:
如果这些解决方案都没有帮助,请在此线程中留下评论。希望这可以帮到你!
- 如果您的项目位于Dropbox文件夹中,请尝试将其移出。
- 如果监视程序看不到名为
index.js
的文件,并且您是通过文件夹名称引用它,则由于Webpack错误,您需要重启监视程序(链接)。- 一些编辑器如Vim和IntelliJ具有“安全写入”功能,目前会破坏监视程序。您需要禁用它。请按照“在vim中禁用交换文件创建”中的说明操作。
- 如果您的项目路径包含括号,请尝试将项目移动到没有括号的路径中。这是由于Webpack错误引起的。
- 在Linux和macOS上,您可能需要微调系统设置以允许更多监视程序。
- 如果项目在虚拟机(如Vagrant提供的)VirtualBox中运行,请在项目目录中创建一个
.env
文件(如果不存在),并将CHOKIDAR_USEPOLLING=true
添加到其中。这确保了下一次运行npm start
时,监视程序使用必要的轮询模式,在虚拟机内部使用。
set backupcopy=yes
解决了这个问题。 - elpddev在项目的基础路径中添加.env
文件,并在其中添加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-scripts 4
你尝试过以超级用户权限运行 npm start 吗?我的项目也遇到了这个问题,我是这样解决的。
$sudo bash
#npm start
npm start
需要超级用户权限,那么有很大的问题(或者你试图绑定到特权端口)。在以超级用户身份运行之前,请确保弄清楚为什么需要这样做。 - Scott Severance在WSL2中,如果您的项目运行在虚拟机中(例如基于Vagrant的VirtualBox),请在您的项目目录下创建一个.env
文件(如果不存在),并添加CHOKIDAR_USEPOLLING=true
。这可以确保下一次运行npm start
时,观察器使用轮询模式,在虚拟机内部必要时使用。
或者直接运行:$ CHOKIDAR_USEPOLLING=true npm start
docker-compose.yml
中,因此最终在 environment
部分下方会显示 CHOKIDAR_USEPOLLING: 'true'
。 - TheHiggsBroson花了几个小时来修复这个问题:
1. 创建一个文件 .env(与 package.json 文件旁边),添加以下内容:
文件:.env
FAST_REFRESH=false
2. 现在,停止并启动服务器
(Ctrl + C to start, if in CMD, on Windows OS)
npm start
4. 现在,在 App.js 文件中更改一些文本。
文件:App.js
from "Learn React"
to "Learn React And it's working"
注意:
1. 服务器重启很重要。
2. 如果您没有看到更改,请刷新浏览器标签页。
.env
文件,并添加那一行。我猜如果我们使用 TS 而不是 JS,那应该不会改变,尝试创建那个文件,它可能会起作用,否则可能有其他与我们项目特定相关的问题。 - Manohar Reddy Poreddy在我的情况下,文件监视器的数量不足。我必须手动更改配置。
使用以下命令在终端上查看活动文件监视器限制。
cat /proc/sys/fs/inotify/max_user_watches
请在 /etc/sysctl.conf 文件中添加以下行。
fs.inotify.max_user_watches = 524288
使用下面的命令应用更改。
sudo sysctl -p
.env
文件,并将以下内容添加到其中。
.env
FAST_REFRESH=false
我在WSL中运行npm
时遇到了这个问题。项目文件夹在我的Windows桌面文件夹中,因此在WSL中npm无法进行自动重新编译。
将项目文件夹移动到WSL用户home
目录后,问题得以解决。
FAST_REFRESH = false
CHOKIDAR_USEPOLLING=true
我的设置中没有包含任何虚拟机(除非WSL2被认为是虚拟机?)。尽管如此,具有上述两个条目的.env使其正常运行。
http://localhost:3000/
访问你的应用程序吗? - Joe Clay