如何修复“ TypeError:fsevents不是构造函数”的反应错误

Nan*_*mar 9 javascript node.js reactjs

在使用npm启动注视React应用时,发生此错误...

我尝试了以下事情:

  1. 删除node_module软件包并重新安装

  2. 使用yarn代替npm

3.使用npm更新fsevent库

仍然出现此错误

注意:如果我们创建react app,则新的/新的纱线启动将起作用,但是我们关闭终端并使用以下相同的内容重新启动,发生错误

/Users/nannam/test-app-2/node_modules/chokidar/lib/fsevents-handler.js:28
Run Code Online (Sandbox Code Playgroud)

return(new fsevents(path))。on('fsevent',callback).start(); ^

TypeError:fsevents不是setFSEventsListener(/ Users / nannam / test-app-2)上createFSEventsInstance(/Users/nannam/test-app-2/node_modules/chokidar/lib/fsevents-handler.js:28:11)的构造函数/node_modules/chokidar/lib/fsevents-handler.js:82:16)在FSWatcher.FsEventsHandler._watchWithFsEvents(/Users/nannam/test-app-2/node_modules/chokidar/lib/fsevents-handler.js:252:16 )在FSWatcher。(/Users/nannam/test-app-2/node_modules/chokidar/lib/fsevents-handler.js:386:25)在process._tickCallback(internal / process / next_tick)处于LOOP(fs.js:1565:14) js:61:11)错误命令失败,退出代码为1。info 访问 https://yarnpkg.com/en/docs/cli/run以获得有关此命令的文档。

zyM*_*cro 17

以我为例

  • 它对我有用,第一次运行此命令时,它向我显示一些警告,** node-pre-gyp WARN Hit Hit EACCES:权限被拒绝,mkdir ... **,所以我用sudo`sudo重新运行它npm审核修复--force (3认同)
  • 这对我有用-但是为什么要这样做呢? (2认同)

小智 7

这是在react GitHub存储库上有据可查的问题,有几个选项可以尝试。

我通过重新安装fsevents解决了我的错误npm i fsevents


Sau*_*try 7

以下步骤解决了问题:

  • 步骤1:移除node_moduleyarn.lock
  • 步骤2:安装纱线
  • 第三步:开始纱线

在此处输入图片说明


cra*_*y_Y 6

提供的@ not-a-file仅在您可以成功安装fsevents的情况下有效?但是当我这样做时,我收到一个错误:

Error: EACCES: permission denied, mkdir '/Users/**/node_modules/jest-haste-map/node_modules/fsents/.node-gyp'
Run Code Online (Sandbox Code Playgroud)

因此,我建议您通过使用以下方法避免这种情况:

sudo npm i fsevents --unsafe-perm=true --allow-root
Run Code Online (Sandbox Code Playgroud)

而且我还发现此错误可能是由于节点版本引起的,当我使用节点12时,我无法成功安装fsevents,因此我使用nvm将节点版本修改为v11.15.0


Can*_*Can 6

使用 Yarn 的选择性依赖解决方案解决了这个问题

"resolutions": {
  "chokidar": "^3.3.1"
},
Run Code Online (Sandbox Code Playgroud)

因为我的依赖项中的一些软件包仍然使用较旧的 chokidar 版本 < 3


小智 5

我解决了

sudo npm i fsevents --unsafe-perm
Run Code Online (Sandbox Code Playgroud)

  • Arthur Menezes,请用一些解释来补充您的纯代码答案。这有助于消除 StackOverflow 是免费编码服务的误解。例如,您可以详细说明与crazy_Y 的旧答案的细微差别以及您提供的额外优势。 (2认同)