Reactjs开发服务器在macOS Catalina上无法启动。

3

我正在尝试使用create-react-app创建一个新的react.js项目。当我执行yarn start时,开发服务器没有启动,并且控制台会给出以下消息:

Starting the development server...

dyld: lazy symbol binding failed: Symbol not found: _FSEventStreamCreate
  Referenced from: /Users/username/project/node_modules/fsevents/build/Release/fse.node
  Expected in: flat namespace

dyld: Symbol not found: _FSEventStreamCreate
  Referenced from: /Users/username/project/node_modules/fsevents/build/Release/fse.node
  Expected in: flat namespace

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

这种情况只会出现在新创建的react.js项目中,而老项目没有这个问题。我使用 brew install node 安装和重新安装了node.js,也重新安装了create-react-app,但仍然无法解决问题。
以下是我的环境信息:
  1. 操作系统:macOS Catalina,版本号10.15.4(19E266)
  2. Node:v13.11.0
  3. create-react-app:版本3.4.1
  4. yarn:版本1.22.4
  5. npm:版本6.13.7
感谢您提前给出完美的答案。
4个回答

2

在MacOS Mojave上,删除“node_modules”文件夹内的fsevents文件夹对我有用。如果删除一个fsevent目录后仍然失败,则删除错误中显示的当前路径下的fsevents文件夹。


2

我删除了node_modules/webpack-dev-server中的fsevent文件夹,这对我有用。


1
这对我有用。MacOS Catalina 10.15.4。我基本上删除了node_modules/webpack-dev-server/node_modules/fsevents,然后它开始工作了。谢谢! - Simeon G

1
问题再次出现。为了解决它,我只需访问brew 网站 并复制安装程序代码 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 然后一切都恢复正常了。

1
我遇到了类似的错误,不是在使用React时,而是在使用Phoenix和Elixir时。由于这个问题是错误信息“Symbol not found: _FSEventStreamCreate”中唯一的搜索结果之一,所以我想分享我的问题和解决方案:
我使用的是MacOS Mojave 10.14.6,尝试使用“Elixir 1.9.4(使用Erlang/OTP 22编译)”和“Phoenix v1.4.10”创建一个Phoenix应用程序。问题是实时重载出现了问题:即使我没有进行任何更改,我的页面仍然不停地刷新。
查看服务器输出,我看到了像这样反复出现的内容:
[error] Task #PID<0.1149.0> started from RumblWeb.Endpoint terminating
** (stop) :watcher_command_error
    (phoenix) lib/phoenix/endpoint/watcher.ex:29: Phoenix.Endpoint.Watcher.watch/3
    (elixir) lib/task/supervised.ex:90: Task.Supervised.invoke_mfa/2
    (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
Function: &Phoenix.Endpoint.Watcher.watch/3
    Args: ["node", ["node_modules/webpack/bin/webpack.js", "--mode", "development", "--watch-stdin"], [cd: "/Users/george/code/phoenix/programming_phx/rumbl/assets"]]

Webpack is watching the files…

...

dyld: lazy symbol binding failed: Symbol not found: _FSEventStreamCreate
  Referenced from: /Users/george/code/phoenix/programming_phx/rumbl/assets/node_modules/fsevents/build/Release/fse.node
  Expected in: flat namespace

dyld: Symbol not found: _FSEventStreamCreate
  Referenced from: /Users/george/code/phoenix/programming_phx/rumbl/assets/node_modules/fsevents/build/Release/fse.node
  Expected in: flat namespace

即,webpack出现错误,导致页面重新编译和重新加载,但这些错误的源头与dyldfsevents有关。

我不明白错误的含义,但将我的node版本从v12.10.0升级到v13.13.0解决了这个问题。

(别忘了重启phoenix服务器,并确保运行mix phx.server的终端窗口正在使用新的、更新的node版本。)


在发布这个答案几天后,我又开始遇到完全相同的错误。原来是 Node 的新版本(14.0.0)于 4 月 21 日发布。再次升级 Node 后,错误再次消失了。 - GMA
糟糕,现在错误又出现了,我不知道为什么。请查看我在此GitHub问题上的评论:https://github.com/fsevents/fsevents/issues/313 - GMA
更新:我仍然没有解决这个问题。我不确定是否有修复方法,直到下一个版本的webpack-dev-server发布;请参见https://github.com/fsevents/fsevents/issues/325和https://github.com/webpack/webpack-dev-server/pull/2539。然而,我为Phoenix想出的解决方法是从config/dev.exs中注释掉部分`watchers:[node:...]`。这意味着webpack将不再监视文件,这意味着每次更改时都需要手动编译资产-但这是我目前找到的唯一解决这个令人沮丧的问题的方法。 - GMA
我之前的评论空间不够了,但是补充一下:如果你想在Phoenix上手动编译你的资源,可以运行cd assets && node node_modules/webpack/bin/webpack.js --mode development - GMA

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