React-Native,打包失败。

38

我刚开始接触React Native,但遇到了一个错误,让我完全不知所措。

我试图引入一个日历库:https://github.com/wix/react-native-calendars

我已在我的package.json文件中加入了这个库的依赖,并运行了npm install

项目一开始正常运行,没有问题。我只是在项目中增加了一行代码:

import { Calendar, CalendarList, Agenda } from 'react-native-calendars';

仅有这些信息。但是当应用程序在设备上加载时,我现在收到了一个红色错误消息,这是我的控制台显示的内容:

错误:绑定失败:Error: 在尝试从文件 /Users/Alex/Documents/workspace/mobile/node_modules/react-native-calendars/src/index.js 解析模块 xdate 时, 成功找到包 /Users/Alex/Documents/workspace/mobile/node_modules/xdate/package.json。 然而,该包本身指定了一个无法解析的 main 模块字段 (/Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js)。 实际上,这些文件都不存在:

* /Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js(.native||.ios.js|.native.js|.js|.ios.json|.native.json|.json)

* /Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js/index(.native||.ios.js|.native.js|.js|.ios.json|.native.json|.json) at ResolutionRequest.resolveDependency (/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:103:15) at DependencyGraph.resolveDependency (/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/node-haste/DependencyGraph.js:272:4579) at dependencies.map.relativePath (/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:376:19) at Array.map () at resolveDependencies (/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:374:16) at /Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:212:33 at Generator.next () at step (/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:297:313) at /Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:297:473 at

然而,我已经检查了目录,事实上/Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js确实存在。 但是我没有看到这部分内容:(.native||.ios.js|.native.js|.js|.ios.json|.native.json|.json)。

至于/Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js/index怎么可能存在,这是没有意义的,因为xdate.js不是一个目录。

需要帮助吗?


1
停止打包器并使用 react-native start 重新运行。 - Hadnazzar
7个回答

95

如果您在打开包管理器时尝试安装模块,则通常会发生这种情况。

尝试删除node_modules文件夹并关闭packager。 然后在您的项目目录中通过npm install重新安装所有内容。


9
我已经解决了“绑定失败,引用错误,图表中未注册模块”的问题,只需关闭打包程序即可。谢谢。 - IvanF.
2
如何关闭打包程序? - Helen Cui
1
在CLI中按Ctrl+C关闭Packager或NPM。您还可以在Windows上使用“taskkill /f /im node.exe”,在Linux上使用“killall -9 node”。 - sagar
1
我在我的项目中安装了许多库。每次我执行 npm install 命令时,都需要手动重新链接一些库以解决一些问题。也许有一种方法可以保存先前的库链接设置,但如果没有这个选项,对我来说 npm install 是一场噩梦。 - Adrian Buciuman
@ZiaUlRehmanMughal 我也是,你找到解决方案了吗? - Gáüřãv Jõşhï
显示剩余2条评论

43

首先关闭你的JavaScript打包程序(在我的情况下是Metro bundler),然后重新启动应用程序。这将创建新的依赖关系图。这应该解决问题。


6
这是正确的答案,因为问题出在打包工具创建的依赖图上,与node_modules文件夹无关。 - Navid
这对我来说是完美的答案。我使用了GIT并在分支之间切换。因此,请确保在您切换分支后(如果需要通过yarn/npn或pod安装新组件)...关闭后台打开的标题为“Metro-Bundler”的终端窗口。然后再次在Xcode中点击“build”按钮。之后,它就可以正常工作,没有任何错误。 - suther
RN 0.63.3 已确认可正常工作。 好奇这是唯一可以找到明智答案的地方。谢谢! 附:在此版本中,您将收到无法解析“main”字段中的FS.common.js的消息。 - DerpyNerd
如果您正在使用Mac,请注销Mac,然后运行npm install,然后运行npm run start --reset-cache。请尝试一下,我已经尝试了所有方法,除此之外没有其他方法。可能是打包程序本身的缓存问题。无需删除node_modules - Amit

9

重新启动bundler - 无需删除Node Modules文件夹

我在使用VS Code和Linux Mint上的Android Studio模拟器时,添加并使用react-native-elements时遇到了此问题。

在VS Code中,我通过“npm start”命令运行Expo与Metro Bundler终端。在安装react-native-elements并将其导入.js文件后,我遇到了“However, this package itself specifies a main module field that could not be resolved" error”错误信息。

在我的情况下,只需在终端会话中按^C来停止Metro bundler,然后再次运行“npm start”即可。完全没有必要删除node modules文件夹。


2
如果你删除了./node_modules文件夹并重新运行npm install,仍然出现错误,请尝试使用--update-binary标志进行安装,即npm install --update-binary。这将清除并重新构建计算机上以前构建的任何包。

1

如果有人遇到相同的问题,而删除 node_module 不起作用,则可以尝试删除所有 node_module、 package.lock 文件,并使用 yarn 安装 node_module 而不是 npm。希望这可以帮到你。


1
请不要删除node_modules文件夹。 打包工具与node_modules文件夹的关系最小。
相反,请关闭所有终端。如果使用VS Code,请也关闭它。
关闭所有本地服务器端口,并尽可能重启系统。 这可能会解决问题。

0

除了重新启动我的 MacBook 之外,以上的解决方案都没有帮助我。浪费了 30 分钟尝试解决这个问题,因为我无法相信重新启动电脑可能是一个解决方案。


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