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 <PID>
。使用上一个答案中提供的相同 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.ios
或 index
:
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
我有 index
,而我之前使用的是 index.ios
和 index.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
在以下任何来源中都找不到插件 [id: 'org.sonarqube', version: '2.8']:
在以下任何来源中都找不到插件 [id: 'org.springframework.boot', version: '2.2.4.RELEASE']: