我正在尝试使用 React Native 运行我的 IOS 应用程序,但我需要更新我的 Pod。所以我在终端上运行:
cd iOS && pod install
但是我在标题上遇到了这个错误
internal/modules/cjs/loader.js:888
throw err;
^
Error: Cannot find module '/Users/my-user/Documents/Test/my-app/ios/undefined'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
at Function.Module._load (internal/modules/cjs/loader.js:730:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
[!] Invalid `Podfile` file: 767: unexpected token at ''.
# from /Users/my-user/Documents/Test/my-app/ios/Podfile:12
# -------------------------------------------
#
> use_native_modules!
# end
# -------------------------------------------
我该怎么办?
我的Podfile如下
# Uncomment the next line to define a global platform for your project
platform :ios, '11.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
target 'MyApp' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for MyApp
use_native_modules!
end
我的 package.json 文件使用此依赖项:
"dependencies": {
"@react-native-community/async-storage": "^1.12.1",
"@react-native-community/cli-platform-ios": "^3.0.0",
"@react-native-community/netinfo": "8.3.0",
"@sentry/react-native": "3.4.3",
"@virgilsecurity/e3kit": "^0.7.0-beta.2",
"@virgilsecurity/key-storage-rn": "^0.2.1",
"appcenter-cli": "^2.1.2",
"moment": "2.29.3",
"react": "16.9.0",
"react-native": "0.61.3",
"react-native-calendars": "1.259.0",
"react-native-code-push": "6.0.0",
"react-native-extended-stylesheet": "^0.12.0",
"react-native-fast-image": "^8.5.11",
"react-native-fbsdk": "^3.0.0",
"react-native-firebase": "^5.5.6",
"react-native-fs": "^2.14.1",
"react-native-gifted-chat": "^0.13.0",
"react-native-image-picker": "^1.0.2",
"react-native-keep-awake": "^4.0.0",
"react-native-keychain": "^4.0.1",
"react-native-masked-text": "^1.13.0",
"react-native-push-notification": "^8.1.1",
"react-native-twilio-video-webrtc": "^2.0.0",
"react-native-vector-icons": "^5.0.0",
"react-native-virgil-crypto": "^0.6.1",
"react-native-webview": "^7.4.1",
"react-redux": "^8.0.2",
"react-router": "^5.1.2",
"react-router-dom": "^5.1.2",
"react-router-native": "^5.1.2",
"realm": "6.0.3",
"redux": "^4.2.0",
"redux-thunk": "^2.4.1"
},
如果我使用 use_native_modules!从代码来看,它可以正常工作。但对他来说却不是这样
我刚刚删除了node_modules,然后运行
npm i
再运行pod install
解决了错误
终于!!!要安装我的 Pod,通常我只需要做 3 件事。
1-从 package.json 中删除包 @react-native-community/cli-platform-ios
2-在终端上,访问主应用程序文件夹并更新 node_modules 上的更改
yarn
3-访问iOS页面并安装pods
cd ios && pod install
我通过禁用 VS Code 的调试器自动附加功能在我的计算机上修复了此问题。该功能导致 Node 发出额外的控制台输出,而
native_modules.rb
文件无法解析这些输出。
此错误可能是由许多本地配置问题引起的。所以我的解决方案可能不适合你。如果禁用 VS Code 自动附加不能解决问题,您可以通过以下方式进行更多调查:
unexpected token at ''
是一个 JavaScript 错误。如果您转到错误所在的 Ruby 文件(通常为 ../node_modules/@react-native-community/cli-platform-ios/native_modules.rb
),您可以看到它正在尝试使用 Node.js 从您的 node_modules 打开一些 JS 文件。在您的终端中,cd
到native_modules.rb
文件的位置并尝试在终端上执行节点命令 - 您可能会获得有关系统上正在发生的情况的更多线索。祝你好运。
再次执行“yarn install”就成功了
就我而言,它是节点 14。删除 package-lock.json 和 node_moduled 不起作用
我切换到node 20,删除package-lock.json和node_module。 现在 iOS 构建正在运行
就我而言,当我将项目react-native版本升级到
0.72.7
并删除package="..."
的根<manifest >
中的main/Android Manifest.xml
时,就会发生这种情况。
不知道为什么react-native会将包名称从Android获取到iOS podfile。但只需重新添加
package="..."
即可解决问题。