React create app hot reload并不总是在linux上运行

时间:2017-02-03 00:42:16

标签: node.js linux reactjs create-react-app

我使用create-react-app样板创建了一个react应用程序,这似乎非常受欢迎,当任何文件发生变化时有时会更新热重载,有时则没有,似乎有最小持续时间或类似的东西,我正在使用Ubuntu,节点版本7.0,package.json中的脚本是npm:'react-script start'我错过了什么?

10 个答案:

答案 0 :(得分:15)

当npm start未检测到更改时,以下是create-react-app文档中提供的常见问题排查步骤 - link

当应用程序与npm start一起运行时,编辑器中的更新代码可能会使用更新的代码刷新borswer。 如果没有发生这种情况,请尝试以下解决方法之一:

  1. 如果项目文件直接从Dropbox或Google云端硬盘等云存储系统同步到您的本地系统,并且您尝试直接在其中运行应用程序,请尝试将其移出。
  2. 由于Webpack错误,您可以need to restart the watcher。如果观察者没有检测到index.js,并且您按文件夹名称引用它。
  3. Vim和IntelliJ等编辑器中的安全写入功能目前打破了观察者。您需要disable it
  4. 由于Webpack watcher bug,带路径的项目包含括号会导致问题,请尝试将项目移动到没有它们的路径。
  5. 要在Linux和macOS中允许更多观察者,您可能需要tweak system settings
  6. 如果项目在虚拟机(如Vagrant配置的)VirtualBox内运行,请在项目目录中创建.env文件(如果该文件不存在),并向其添加CHOKIDAR_USEPOLLING=true。这样可以确保下次运行npm start时,观察者会根据需要在VM中使用轮询模式。
  7. 可以尝试增加max_users_watches - link
  8. 更多参考资料:

答案 1 :(得分:5)

试试这些:

  • 关闭IDE中的安全写入
  • 增加max_user_watches
  • 您的路径不应该有圆括号

作为最后的手段尝试使用它作为您的env变量: CHOKIDAR_USEPOLLING=true npm start

来源: https://github.com/facebookincubator/create-react-app/issues/659 https://github.com/facebookincubator/create-react-app/issues/1049#issuecomment-261731734

答案 2 :(得分:1)

运行此命令

sudo -i
echo 1048576 > /proc/sys/fs/inotify/max_user_watches
exit

答案 3 :(得分:0)

unbuntu 中,我基本上终止了在端口上运行的所有进程(对于react app,默认值为:3000)。

列出在端口3000上运行的所有进程。

lsof -i :3000

此命令将显示类似这样的内容。

COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node     7429 yipl   19u  IPv4 1081760      0t0  TCP localhost:3000->localhost:35762 (ESTABLISHED)
chrome  26448 yipl  177u  IPv4 1080082      0t0  TCP localhost:35762->localhost:3000 (ESTABLISHED)

现在通过PID终止进程。

kill -9 7429
kill -9 26488

再次启动您的React应用。

答案 4 :(得分:0)

显然,仅当您弹出应用时,热模块才可以重新加载。

但是如果您尚未退出应用,则可以按照these instructions进行操作。

在应用顶部找到ReactDOM.render(...),并在其下方添加以下行:

ReactDOM.render(...);

if (module.hot) {
  module.hot.accept('./App', () => {
    // --- Copy-paste your usual ReactDOM.render(...) call here: --- //
    ReactDOM.render(...);
  });
}

上面链接的说明还显示了如何热重装组件树之外的内容,例如redux reducer。

答案 5 :(得分:0)

我刚刚遇到的另一种情况是在NVM上并行使用多个版本的nodejs。基本上,我有两个终端窗口,一个运行节点10.x,另一个运行在节点9.x,并且Webpack watcher停止看到更改。

解决方案是将两者带入相同的节点版本

答案 6 :(得分:0)

我能够使用:

sudo npm start

答案 7 :(得分:0)

尝试删除node_modules文件夹并重新安装 通过使用cmd npm install

为我工作(ubuntu 18.04.3 LTS)

答案 8 :(得分:0)

sudo npm start

我对 linux 了解不多,但这可能是由于防火墙设置,因为我在 windows 中做了同样的事情,并且在那里启动 react dev server 我们需要通过防火墙提供访问权限,所以在这里我们也这样做需要给它管理员权限(sudo 在 ubuntu linux 发行版的情况下)。

答案 9 :(得分:0)

如果您启动应用时出现一堆错误,它似乎会停止监视您的文件,因此不会检测到您对损坏文件的修复。似乎您需要在没有太多/严重错误的情况下启动“启动”,文件观察器才能正常工作。