Metro Bundler 无法启动。 (代码:EACCES)

Metro Bundler failed to start. (code: EACCES)

我是运行ubuntu18.04

我在尝试使用 exp start 启动我的 expo 服务器时得到了这个(我也尝试过 exp start -cexp start -c --tunnelexp start --tunnel)。

我得到:

felix:~/job/App (dev) $ exp start
[11:50:59] Using project at /home/felix/job/App
[11:51:08] Scanning folders for symlinks in /home/felix/job/App/node_modules (8ms)
[11:51:08] Starting Metro Bundler on port 19001.
[11:51:08] Metro Bundler ready.
[11:51:08] Successfully ran `adb reverse`. Localhost urls should work on the connected Android device.
[11:51:10] Tunnel ready.
[11:51:10] Expo is ready.

[11:51:10] Your URL is: exp432e0186c47243658eeef37602b6c1c4://10.114.17.163:19000
[11:51:10] Logs for your project will appear below. Press Ctrl+C to exit.
[11:51:15] Metro Bundler failed to start. (code: EACCES)

我已经尝试重新安装 expo、node 模块、metro。我已经删除了我的 .expo 文件,以便可以重新生成它。

我(我认为)对我的所有文件都有正确的权限。我在我的主目录中拥有 repo,我不知道 expo 是否在我的根目录中创建了任何文件。

也许有一种方法可以准确地检查 metro bundler 失败和抛出错误的地方?

值得注意的是,如果我使用 create-react-native-app 创建一个新应用程序并使用 exp start 启动服务器,那么它就可以工作了!!所以我的这个回购似乎有问题?使用相同操作系统的其他人可以通过简单地克隆 repo 并以 exp start.

启动它来使它工作

我解决了。问题是 metro bundler(构建 js 文件的程序)无法连接到我的 android 模拟器。这是因为模拟器是由 root 用户创建的,因此 metro bundler 没有正确的权限,因此它抛出了 EACCES 错误。

我所做的是在获得用户许可的情况下创建一个新的 android 模拟器,然后它就成功了。

您同样可以 运行 命令提示符作为管理员并执行

net stop http

然后执行

net start http

重新启动所有端口以确保它不是连接问题

sudo exp start 过去已经为我解决了这个问题。 EACCES 通常与基于权限的错误有关

你可以运行:

sudo expo start --tunnel