所以我尝试运行一个用react-native编写的iOS应用程序项目,在克隆和npm install之后,我在尝试在iOS文件夹中安装pod时遇到了问题。
这是错误:
[!] 在
ReactNativePermissions
中找不到
../node_modules/react-native-permissions
的 podspec
由于:
pod 'ReactNativePermissions', :path => '../node_modules/react-native-permissions'
我尝试搜索但找不到任何有效的解决方案,有人可以帮助我吗?
React-native版本:2.0.1 React-native-permission:版本 2.0.8
所以这实际上是问题所在。我意识到的一件事是,人们通常会执行“npm install library”之类的操作,但没有指定版本。发生的情况是,它在 package.json 中变成“^version”,几年后,当我运行 npm install 时,我得到了较新的版本,但它不兼容,所以请务必检查您的版本。
更新:
对于react-native-permissions v3.0.1^,路径已更改为
#{permissions_path}/<ModuleName>/Permission-<ModuleName>.podspec
对于确切的路径,请尝试(从项目根目录):
cd node_modules/react-native-permissions/ios/
您将获得所有可用的模块名称,
cd <ModuleName>
并且您的“.podspec”文件应该在那里。
对我来说,问题出在路径上。我将路径更改为:
pod 'Permission-Camera', :path => "#{permissions_path}/Camera/Permission-Camera.podspec"
然后就成功了。
又更新了
文档已更新至 3.0.0+
参考https://github.com/zoontek/react-native-permissions/issues/547#issuecomment-735216465
更新
我再次遇到这个问题,我注意到yarn add
react-native-permissions
安装了3.0.0-beta.2版本,其中permissions_path
中没有podspec。我更新了 package.json 以拥有最新的 2+ 版本(当时为 2.2.2)来解决。
之前
:path 应该有双引号而不是单引号。
例如
pod 'Permission-Camera', :path => '#{permissions_path}/Camera.podspec'
应该是
pod 'Permission-Camera', :path => "#{permissions_path}/Camera.podspec"
确定你的项目目标:
permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-Camera', :path => "#{permissions_path}/Camera/Permission-Camera.podspec"
我的问题是目标没有 .podspec`
我有
pod 'Permission-Calendars', :path => "#{permissions_path}/Calendars"
而不是
pod 'Permission-Calendars', :path => "#{permissions_path}/Calendars.podspec"
首先将其添加到你的 pod 文件依赖位置:
target 'Bverify' do
# Pods for your project name
........
permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-Camera', :path => "#{permissions_path}/Camera.podspec"
pod 'Permission-MediaLibrary', :path => "#{permissions_path}/MediaLibrary.podspec"
pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary.podspec"
......
pod install 之前需要先安装权限:
运行命令:
npm i react-native-permissions
最后:
cd ios 吊舱安装
我安装了 3.6.0,并看到
Permission-AppTrackingTransparency
出现同样的错误,因此按照此答案从 podfile 中删除了 .podspec
并且它有效:这是来自 https://www.npmjs.com/package/react-native-permissions
的建议实现对于反应本机 >= 0.72
更换这个
require Pod::Executable.execute_command('node', ['-p',
'require.resolve(
"react-native/scripts/react_native_pods.rb",
{paths: [process.argv[1]]},
)', __dir__]).strip
使用以下代码行
def node_require(script)
# Resolve script with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
"require.resolve(
'#{script}',
{paths: [process.argv[1]]},
)", __dir__]).strip
end
node_require('react-native/scripts/react_native_pods.rb')
node_require('react-native-permissions/scripts/setup.rb')
并添加具有所需权限的
setup_permissions
调用:
# …
platform :ios, min_ios_version_supported
prepare_react_native_project!
# ⬇️ uncomment wanted permissions
setup_permissions([
# 'AppTrackingTransparency',
# 'Bluetooth',
# 'Calendars',
# 'CalendarsWriteOnly',
# 'Camera',
# 'Contacts',
# 'FaceID',
# 'LocationAccuracy',
# 'LocationAlways',
# 'LocationWhenInUse',
# 'MediaLibrary',
# 'Microphone',
# 'Motion',
# 'Notifications',
# 'PhotoLibrary',
# 'PhotoLibraryAddOnly',
# 'Reminders',
# 'Siri',
# 'SpeechRecognition',
# 'StoreKit',
])
# …