React 在任何根目录中都找不到入口文件

Posted

技术标签:

【中文标题】React 在任何根目录中都找不到入口文件【英文标题】:React cannot find entry file in any of the roots 【发布时间】:2015-04-01 10:41:25 【问题描述】:

我在我的 ios 项目中使用 React Native 作为 Pod。 当我尝试加载使用 React Native 创建的视图时,出现错误屏幕,将我指向运行 npm 的终端窗口。

在终端中,我看到的错误是: 错误:在任何根目录中都找不到入口文件:

我尝试了一些方法,将文件移动到其他位置,但没有成功。 我确实运行了“npm start”,并且正在“http://localhost:8081/”中寻找文件。 文件的当前位置与我运行“npm start”的位置相同。

我完全被困在这里。 我是不是配置错了。如何从这里进行故障排除?

【问题讨论】:

【参考方案1】:

检查在 bash 终端之一中运行的节点服务器,这可能是由您之前启动的先前 ReactNative XCode 项目启动的。停止该进程并再次运行 XCode 项目,这应该可以解决问题。

【讨论】:

今天拯救我的生命...正是我想要的!【参考方案2】:

很抱歉回答我自己的问题(有点蹩脚),但我希望它对其他人有所帮助。

显然我们需要通过提供替代路径来运行 npm 命令。

npm run start -- --root <directory_with_your_react_component_js_sources>

http://facebook.github.io/react-native/docs/embedded-app.html#content 是关于如何将 React Native 集成到现有应用中的指南。

【讨论】:

“有点蹩脚”正好相反,我的朋友。你是在为他人分享你的知识,而不是把它锁在你自己的面子里。 即使这对我不起作用,即使我有另一个这样的项目确实有效。我最终将index.ios.js 文件保留在项目根目录中,并从子文件夹中加载其余文件。【参考方案3】:

当 React 想要使用已经被其他应用程序使用的端口时,就会发生这种情况。由于 React 侦听端口 8081,因此您可以让进程在该端口上运行,在 Shell 中键入以下内容:

lsof -n -i4TCP:8081

你会得到这样的答案:

COMMAND   PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME

node 28571 username 32u IPv6 0x742e2ab233abdb9f 0t0 TCP *:sunproxyadmin (LISTEN)

只是通过输入 shell 杀死了它 kill -9 &lt;PID&gt;。使用上一个答案中提供的相同 PID。

然后运行npm start

【讨论】:

指示某人kill -9 一些随机过程似乎是非常糟糕的建议。至少尝试确定该进程是什么,为什么它在 8081 上侦听,以及是否需要它。这可能会在短期内解决问题,但如果不知道进程为何运行,则无法知道它是否会在长期内解决问题。 这个答案确实对我更有帮助。有许多可能导致多个进程运行的潜在原因。我不明白为什么答案必须解决这个问题。 最后一项:kill -9(确定杀死)绕过所有信号捕捉器。即时脑叶切除术。而是使用 kill -3 (TERM) 来允许任何信号捕获器以有序的方式关闭进程。只有当 SIGTERM 不起作用时,才应该继续 SIGKILL。【参考方案4】:

有这个问题:

https://github.com/facebook/react-native/issues/541

这似乎是一回事。那里的用户似乎表示他们之前曾从该目录运行过该项目,这让我想知道这是否是由于先前运行的挂起或遗留的打包程序?尝试关闭终端窗口并重新运行 Xcode 项目。

一般来说,这听起来像是打包程序没有按预期生成文件的问题。终端窗口中是否还有其他消息?

【讨论】:

谢谢科林!这确实与我看到的症状相同。不过我的情况不同。我在 React Native 文档中找到了答案。 你有没有机会在这里发布你的答案并接受它以防其他人有这个问题?【参考方案5】:

在杀死所有节点进程并运行上面的命令后,我的设置仍然无法正常工作后,我想更新它。

目前似乎有一个 ReactNative open issue:https://github.com/facebook/react-native/issues/14246

解决方案是杀死外部启动的包管理器,然后在项目文件夹中运行 "npm start"

【讨论】:

【参考方案6】:

检查您的 AppDelegate.m 中是否有 index.iosindex

jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

我有 index,而我之前使用的是 index.iosindex.android,所以这就是它失败的原因。

【讨论】:

【参考方案7】:

根据我的经验,这是因为 Watchman 和 Jest。

我找到的解决方案是 添加

name = name.replace('/', '\\');

到 'node_modules\jest-haste-map\build\crawlers\watchman.js'

您可以在此处查看更多信息 Watchman not working with React Native

【讨论】:

以上是关于React 在任何根目录中都找不到入口文件的主要内容,如果未能解决你的问题,请参考以下文章

Typeorm + Firebase 功能:部署后“在任何 orm 配置文件中都找不到连接选项”

带有 Docker 的 Rails '在任何资源中都找不到 ...' 用于现有的 gem

在任何版本中都找不到 Composer 包

在以下任何来源中都找不到插件 [id: 'org.sonarqube', version: '2.8']:

在以下任何来源中都找不到插件 [id: 'org.springframework.boot', version: '2.2.4.RELEASE']:

在查询的任何表中都找不到列 ( )(或 SLV 未定义)。 SQLCODE=-217