根据工作要求调整环境后,热重载停止工作
Hot reload stopped working after adjusting environment for work requirements
几天前我开始了一个新的开发者角色,为了适应工作做了一些环境改变。从那以后,我的 reload/fast 热刷新就完全停止工作了。即使我手动刷新页面也不会显示更改。仅当我停止开发服务器并使用 'npm run dev' 重新启动它时才显示更改。右下角的三角形指示器应该处于活动状态,显示 window 的活动重新加载(这也不再始终显示,如果重新加载页面,但遗憾的是,建议的更改不可见)
上下文:
- 它对我的所有 NextJS 和 React 应用程序都有这种影响。即使 运行 在 NextJS 示例页面上设置基本项目模板也显示没有热重载工作。
- 我研究了这个问题,似乎错误的导入(例如使用小写字母导入组件或页面目录中的文件大写)可能导致此问题,但我梳理了代码并没有发现任何问题(当然,我可能会遗漏它,但我的代码库超过 300 个文件)。
- 后台的服务工作者可能会导致问题,但我清除了浏览器中的所有服务工作者以确保它仍然无法解决问题。
- 我为工作目的安装了 ngrok 隧道,并 docker-compose 处理工作开发。环境。
- 确保我使用的是最新的 Next 版本。甚至删除了 node_modules 和 运行 npm install。删除了 .next 和 out 文件夹,仍然没有成功。
有人对我接下来应该尝试什么有任何想法或线索吗?它与我为工作安装的东西有关吗?与 VS 代码或 WSL2 相关的东西?似乎很令人费解,好像是一夜之间发生的。感谢您的任何见解或建议!
系统信息
OS: Windows(VS 代码的 WSL2 虚拟化)
浏览器:Chrome
Next.js 的版本:10.0.3
Node.js 版本:14.8.0
部署:npm 运行 dev 用于开发工作;为 AWS 托管扩大发布
谢谢,我遇到了与 WSL2 相同的问题。我只是切换到 windows 终端,它可以工作。
问题出在 WSL2 上。我在 VS Code 中使用 WSL2;这是 Linux 环境中的重大性能升级。问题是 WSL2 实际上在 'virtualization' 中,因此无法同时从 VS Code 和浏览器 (localhost:3000) 发送信息。
这是他们正在解决的一个大问题,目前还没有解决办法。这就是快速刷新不起作用的原因,因为 localhost 没有收到所做的更改。通过代理或恢复到 WSL1 https://github.com/microsoft/WSL/issues/4769
OP 在问题部分提供的解决方案
如果您 运行 Poweshell 作为管理员并且 运行
wsl.exe -l -v
这将为您提供 wsl 版本 运行。
我个人使用Ubuntu,这是输出
Ubuntu Running 2
docker-desktop Stopped 2
docker-desktop-data Stopped 2
要切换到 wsl 1,
运行
wsl.exe --set-version Ubuntu 1
如果你想切换回来,
运行,
wsl.exe --set-version Ubuntu 2
.
这对我有用。
在我的 React 项目中,我只是在根项目文件夹的 .env
文件中添加值
FAST_REFRESH=false
CHOKIDAR_USEPOLLING=true
而且有效!享受!
将 .env
文件或 .env.local
文件添加到您的根目录并在其上放置以下行:
WATCHPACK_POLLING=true
现在,重新启动您的服务器。
几天前我开始了一个新的开发者角色,为了适应工作做了一些环境改变。从那以后,我的 reload/fast 热刷新就完全停止工作了。即使我手动刷新页面也不会显示更改。仅当我停止开发服务器并使用 'npm run dev' 重新启动它时才显示更改。右下角的三角形指示器应该处于活动状态,显示 window 的活动重新加载(这也不再始终显示,如果重新加载页面,但遗憾的是,建议的更改不可见)
上下文:
- 它对我的所有 NextJS 和 React 应用程序都有这种影响。即使 运行 在 NextJS 示例页面上设置基本项目模板也显示没有热重载工作。
- 我研究了这个问题,似乎错误的导入(例如使用小写字母导入组件或页面目录中的文件大写)可能导致此问题,但我梳理了代码并没有发现任何问题(当然,我可能会遗漏它,但我的代码库超过 300 个文件)。
- 后台的服务工作者可能会导致问题,但我清除了浏览器中的所有服务工作者以确保它仍然无法解决问题。
- 我为工作目的安装了 ngrok 隧道,并 docker-compose 处理工作开发。环境。
- 确保我使用的是最新的 Next 版本。甚至删除了 node_modules 和 运行 npm install。删除了 .next 和 out 文件夹,仍然没有成功。
有人对我接下来应该尝试什么有任何想法或线索吗?它与我为工作安装的东西有关吗?与 VS 代码或 WSL2 相关的东西?似乎很令人费解,好像是一夜之间发生的。感谢您的任何见解或建议!
系统信息 OS: Windows(VS 代码的 WSL2 虚拟化) 浏览器:Chrome Next.js 的版本:10.0.3 Node.js 版本:14.8.0 部署:npm 运行 dev 用于开发工作;为 AWS 托管扩大发布
谢谢,我遇到了与 WSL2 相同的问题。我只是切换到 windows 终端,它可以工作。
问题出在 WSL2 上。我在 VS Code 中使用 WSL2;这是 Linux 环境中的重大性能升级。问题是 WSL2 实际上在 'virtualization' 中,因此无法同时从 VS Code 和浏览器 (localhost:3000) 发送信息。
这是他们正在解决的一个大问题,目前还没有解决办法。这就是快速刷新不起作用的原因,因为 localhost 没有收到所做的更改。通过代理或恢复到 WSL1 https://github.com/microsoft/WSL/issues/4769
OP 在问题部分提供的解决方案
如果您 运行 Poweshell 作为管理员并且 运行
wsl.exe -l -v
这将为您提供 wsl 版本 运行。
我个人使用Ubuntu,这是输出
Ubuntu Running 2
docker-desktop Stopped 2
docker-desktop-data Stopped 2
要切换到 wsl 1,
运行
wsl.exe --set-version Ubuntu 1
如果你想切换回来,
运行,
wsl.exe --set-version Ubuntu 2
.
这对我有用。
在我的 React 项目中,我只是在根项目文件夹的 .env
文件中添加值
FAST_REFRESH=false
CHOKIDAR_USEPOLLING=true
而且有效!享受!
将 .env
文件或 .env.local
文件添加到您的根目录并在其上放置以下行:
WATCHPACK_POLLING=true
现在,重新启动您的服务器。