在不对 webpack 配置进行任何更改的情况下,webpack 希望监视所有父目录,直到根目录。
所以它会导致错误: EMFILE: Too much open files, watch '/'
有人有同样的问题吗,或者有人知道我如何找到原因,或者有人知道解决方案吗?
Webpack 配置是:
const path = require('path');
module.exports = {
entry: './src/index.js',
watch: true,
watchOptions: {
ignored: '/node_modules/',
},
output: {
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.js$/,
exclude: '/node_modules/',
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
},
{
test: /\.less$/i,
use: [
// compiles Less to CSS
'style-loader',
'css-loader',
'less-loader',
]
}
],
}
}
我多次遇到同样的问题。重新启动可以工作,但很乏味。 这篇文章here指出了另一个解决方案。
检查
cat /proc/sys/fs/inotify/max_user_instances
(我的是128)并增加值。
可以通过以下方式完成:
sudo sysctl fs.inotify.max_user_instances=256
这立即奏效了。
重新启动后,该值必须恢复到
/etc/sysctl.conf
这是一个系统问题。重启后,一切正常。
我遇到了这个问题,并且能够通过运行解决它而无需重新启动:
killall node
仅供参考,我使用的是 Node v20.x 的 Macbook Pro (M2 Pro)