ReactJS测试 - fsevents不是一个函数

16
我正在尝试为我的程序编写测试用例,我听说过testing-library/reactjest-junit很好用。我使用npm将这两个包安装到我的devDependencies中,并更改了测试脚本:"test": 'react-scripts test"当我运行npm test时,我收到了一个错误信息:

TypeError: fsevents is not a function

所以我尝试npm i fsevents,但没有帮助。我尝试在网上查找,但那里的错误要么是fsevents不是构造函数,要么是改为yarn。

是什么导致了这个问题?我正在使用npm v6.4.1和react-script v3.1.1

编辑:如果有影响,我也在使用Mac

编辑2:我再次运行测试,没有改变任何内容,这个错误就不再出现了。

5个回答

46

在OSX上遇到类似的问题。 如果您有 Homebrew,只需在终端中运行以下命令,然后再次尝试:

在终端中运行以下命令,然后再次尝试:

brew install watchman 

如果这没有帮助,请尝试在终端中运行以下命令:

sudo rm -rf (xcode-select -print-path)
xcode-select --install

5
我曾经遇到相同的问题,执行 brew install watchman 命令解决了我的问题。谢谢。 - RKM
1
任何使用端口而不是brew的人都可以运行sudo port install watchman - Iqbal
我使用了React Native的Expo,但无法在模拟器/手机等设备上打开我的应用程序,并出现错误提示:“无法连接到节点服务器,请确保正确启动...”,这也是我遇到该问题时的解决方案。brew install watchman - user14009196
brew upgrade watchman 升级解决了我的问题,谢谢。 - MuYunyun

13

每次我使用create-react-app时,在立即运行“npm test”时都会遇到这个确切的错误。 如果我已经致力于React项目,则此方法对我有效:

npm install fsevents@1.2.11

经过一番搜索,我发现需要手动安装这个软件包,因为在初始安装过程中,CRA输出了多个

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.11 ...

警告信息。然而,我需要这个软件包来运行“npm test”。

不过,我的更大问题是CRA跳过了这个依赖安装,因为它无法检测到我的系统上的xcode。我收到了以下消息:

gyp: No Xcode or CLT version detected!

解决方案是运行命令

xcode-select --install

现在,任何未来的 create-react-app 应该都能够无需安装其他依赖而顺利运行!这里有额外的 Xcode 故障排除信息。


2
你让我的生活变得轻松了。谢谢。 - Makan

9

1
该URL不再指向文章。 - mojave

-2

fsevents 在 Mac OS 和 Windows 操作系统上默认与 npm 一起安装。错误 "is not a constructor" 可能意味着您尝试在您的代码中初始化 fsevents。最有可能是使用 new 关键字。请检查您的代码,如果不是,请告诉我。


但是错误是“不是一个函数”,这是否与不是构造函数相同? - H. Manner
很可能。如果您在代码中使用了 fsevents,请向我展示该部分代码并解释您想要做什么。 - Jose Barranco
我今天再次运行了命令,它正常工作。我不明白在我的最后一次测试和最近的测试之间没有更改任何内容,出了什么问题。 - H. Manner

-2

你需要做的非常简单。运行以下代码:

rm -rf node_modules/ package-lock.json  

然后

npm i

这对我有用。


1
删除您的 package-lock 文件并不推荐,这可能会导致许多与依赖版本相关的问题等等。当您删除 package-lock 文件时,一定要确切知道自己在做什么。有很多资源可以帮助您了解 package-lock 文件,可以从以下链接开始: https://medium.com/coinmonks/everything-you-wanted-to-know-about-package-lock-json-b81911aa8ab8 - Erez Lieberman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接