Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

开发服务器不会自动刷新 #1428

Closed
yurnery opened this issue Jul 18, 2024 · 12 comments
Closed

开发服务器不会自动刷新 #1428

yurnery opened this issue Jul 18, 2024 · 12 comments
Assignees

Comments

@yurnery
Copy link

yurnery commented Jul 18, 2024

把之前一个很大的 umi 项目转为这个打包,
控制台会报错Error watching files: Too many open files (os error 24) about ["xxx/packages/bair/node_modules/.../src/IconAlipayCircleFilled/index.tsx"], 然后就没法热更新了, 而且刷新网页请求到的也是老, 只有新启动开发服务器, 编译的结果才是正确的.

@sorrycc
Copy link
Member

sorrycc commented Jul 19, 2024

1、尝试关闭当前 terminal tab,重开能解吗?
2、这是 monorepo 项目?

@jeasonnow
Copy link
Contributor

jeasonnow commented Jul 19, 2024

了解了一下实现,感觉可以尝试调整一下 watch.ignorePaths 来避免一下。但是 mako 是不是可以尝试在 watch 中增加一个多线程分片的处理,比如监听根目录下面的子目录,以及依赖图中不在根目录下的目录时,使用 thread::spawn 来新开线程执行?

Watcher 只实例化一次而且没有 clone 能力...

@afc163
Copy link
Contributor

afc163 commented Jul 20, 2024

antd 也遇到了 +1

@jeasonnow
Copy link
Contributor

了解了一下实现,感觉可以尝试调整一下 watch.ignorePaths 来避免一下。但是 mako 是不是可以尝试在 watch 中增加一个多线程分片的处理,比如监听根目录下面的子目录,以及依赖图中不在根目录下的目录时,使用 thread::spawn 来新开线程执行?

Watcher 只实例化一次而且没有 clone 能力...

notify-rs/notify#596

参考这个,问题是因为 mako 在使用 notify 时 feature 是 macos_kqueue 而导致的。

kqueuefsevent 具体的差别如下:

  • kueue

    • 主要用于处理通用的异步任务和事件队列。
    • 如果在文件监控的实现中使用 kueue 处理每个文件的事件监控,可能会导致每个文件或目录都单独打开一个文件描述符。
    • 如果监控大量文件,每个文件都可能占用一个文件描述符,从而很快达到系统的文件描述符限制。
  • fsevent_sys

    • 专门设计用于文件系统事件监控。
    • 利用操作系统提供的文件系统事件通知机制,比如 macOS 的 FSEvents 或 Linux 的 inotify。
    • 这些机制通常允许监控整个目录树而不需要为每个文件单独打开文件描述符,从而减少了文件描述符的使用。

    是不是可以考虑调整 featuremacos_fsevent 来解一下?

@yurnery
Copy link
Author

yurnery commented Jul 23, 2024

1、尝试关闭当前 terminal tab,重开能解吗? 2、这是 monorepo 项目?

  1. 重新打开了很多次, 都是一样的报错;
  2. 是 menorepo 项目, 引用的 antd , 报错的是 antd 里面的组件

@jeasonnow
Copy link
Contributor

antd 也遇到了 +1

直接使用 ant-design 源码使用 mako 构建 doc 可复现哇?

@chaomingd
Copy link

dumi 开启 mako 也遇到了
image

@jeasonnow
Copy link
Contributor

dumi 开启 mako 也遇到了 image

试试执行 ulimit -n 看看返回值?

@yurnery
Copy link
Author

yurnery commented Aug 2, 2024

dumi 开启 mako 也遇到了 image

试试执行 ulimit -n 看看返回值?

ulimit -n
2560

@sorrycc
Copy link
Member

sorrycc commented Aug 21, 2024

补一下 antd 的复现步骤。

1、git clone
2、npm i
3、npm start
4、修改 markdown 文件,比如 docs/blog/build-ghost.en-US.md

然后报错。

Error watching files: Too many open files (os error 24)

@nathanlao
Copy link

补一下 antd 的复现步骤。

1、git clone 2、npm i 3、npm start 4、修改 markdown 文件,比如 docs/blog/build-ghost.en-US.md

然后报错。

Error watching files: Too many open files (os error 24)

antd 本地开发也遇到同样的问题

@Jinbao1001
Copy link
Member

close with #1550

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants