React Native HealthKit 初始化报错。
按照官方文档安装的。
但是一执行官方的demo,就报错了。
_reactNativeHealth.default.initHealthKit is not a function (it is undefined)
我真无语了,这怎么跑个官方例子都能报错的。
发现有人在这里提到了 遇到一样的错误: https://github.com/agencyenterprise/react-native-health/issues/404
rn最近某个版本改了机制,lazyload modules,导致require('react-native').NativeModules
得到的是个{}
对象,所以react-native-health库里export的AppleHealthKit定义在运行时不完整。
打开 node_modules/react-native-health/index.js ,可以看到确实是这样。
按照帖子里别人给的代码,我还是不成功,根据原理,然后我是临时先把需要的函数手动都获取一下,就有定义了。
临时解决,我就把它们都cue一下,就好了,反正先这样。等官方解决。
修改后的临时方案是这样:
import { Activities, Observers, Permissions, Units } from './src/constants'
const { AppleHealthKit } = require('react-native').NativeModules
const Kit = {
initHealthKit: AppleHealthKit["initHealthKit"],
isAvailable: AppleHealthKit["isAvailable"],
getBiologicalSex: AppleHealthKit["getBiologicalSex"],
getBloodType: AppleHealthKit["getBloodType"],
getDateOfBirth: AppleHealthKit["getDateOfBirth"],
getLatestWeight: AppleHealthKit["getLatestWeight"],
getWeightSamples: AppleHealthKit["getWeightSamples"],
saveWeight: AppleHealthKit["saveWeight"],
getLatestHeight: AppleHealthKit["getLatestHeight"],
getHeightSamples: AppleHealthKit["getHeightSamples"],
saveHeight: AppleHealthKit["saveHeight"],
getLatestWaistCircumference: AppleHealthKit["getLatestWaistCircumference"],
getWaistCircumferenceSamples: AppleHealthKit["getWaistCircumferenceSamples"],
saveWaistCircumference: AppleHealthKit["saveWaistCircumference"],
getLatestPeakFlow: AppleHealthKit["getLatestPeakFlow"],
getPeakFlowSamples: AppleHealthKit["getPeakFlowSamples"],
savePeakFlow: AppleHealthKit["savePeakFlow"],
saveLeanBodyMass: AppleHealthKit["saveLeanBodyMass"],
getLatestBmi: AppleHealthKit["getLatestBmi"],
getBmiSamples: AppleHealthKit["getBmiSamples"],
saveBmi: AppleHealthKit["saveBmi"],
getLatestBodyFatPercentage: AppleHealthKit["getLatestBodyFatPercentage"],
getBodyFatPercentageSamples: AppleHealthKit["getBodyFatPercentageSamples"],
getLatestLeanBodyMass: AppleHealthKit["getLatestLeanBodyMass"],
getLeanBodyMassSamples: AppleHealthKit["getLeanBodyMassSamples"],
getStepCount: AppleHealthKit["getStepCount"],
getSamples: AppleHealthKit["getSamples"],
getAnchoredWorkouts: AppleHealthKit["getAnchoredWorkouts"],
getDailyStepCountSamples: AppleHealthKit["getDailyStepCountSamples"],
saveSteps: AppleHealthKit["saveSteps"],
saveWalkingRunningDistance: AppleHealthKit["saveWalkingRunningDistance"],
getDistanceWalkingRunning: AppleHealthKit["getDistanceWalkingRunning"],
getDailyDistanceWalkingRunningSamples: AppleHealthKit["getDailyDistanceWalkingRunningSamples"],
getDistanceCycling: AppleHealthKit["getDistanceCycling"],
getDailyDistanceCyclingSamples: AppleHealthKit["getDailyDistanceCyclingSamples"],
getFlightsClimbed: AppleHealthKit["getFlightsClimbed"],
getDailyFlightsClimbedSamples: AppleHealthKit["getDailyFlightsClimbedSamples"],
getEnergyConsumedSamples: AppleHealthKit["getEnergyConsumedSamples"],
getProteinSamples: AppleHealthKit["getProteinSamples"],
getFiberSamples: AppleHealthKit["getFiberSamples"],
getTotalFatSamples: AppleHealthKit["getTotalFatSamples"],
saveFood: AppleHealthKit["saveFood"],
saveWater: AppleHealthKit["saveWater"],
getWater: AppleHealthKit["getWater"],
saveHeartRateSample: AppleHealthKit["saveHeartRateSample"],
getWaterSamples: AppleHealthKit["getWaterSamples"],
getHeartRateSamples: AppleHealthKit["getHeartRateSamples"],
getRestingHeartRate: AppleHealthKit["getRestingHeartRate"],
getWalkingHeartRateAverage: AppleHealthKit["getWalkingHeartRateAverage"],
getActiveEnergyBurned: AppleHealthKit["getActiveEnergyBurned"],
getBasalEnergyBurned: AppleHealthKit["getBasalEnergyBurned"],
getAppleExerciseTime: AppleHealthKit["getAppleExerciseTime"],
getAppleStandTime: AppleHealthKit["getAppleStandTime"],
getVo2MaxSamples: AppleHealthKit["getVo2MaxSamples"],
getBodyTemperatureSamples: AppleHealthKit["getBodyTemperatureSamples"],
getBloodPressureSamples: AppleHealthKit["getBloodPressureSamples"],
getRespiratoryRateSamples: AppleHealthKit["getRespiratoryRateSamples"],
getHeartRateVariabilitySamples: AppleHealthKit["getHeartRateVariabilitySamples"],
getHeartbeatSeriesSamples: AppleHealthKit["getHeartbeatSeriesSamples"],
getRestingHeartRateSamples: AppleHealthKit["getRestingHeartRateSamples"],
getBloodGlucoseSamples: AppleHealthKit["getBloodGlucoseSamples"],
getCarbohydratesSamples: AppleHealthKit["getCarbohydratesSamples"],
saveBloodGlucoseSample: AppleHealthKit["saveBloodGlucoseSample"],
saveCarbohydratesSample: AppleHealthKit["saveCarbohydratesSample"],
deleteBloodGlucoseSample: AppleHealthKit["deleteBloodGlucoseSample"],
deleteCarbohydratesSample: AppleHealthKit["deleteCarbohydratesSample"],
getSleepSamples: AppleHealthKit["getSleepSamples"],
getInfo: AppleHealthKit["getInfo"],
getMindfulSession: AppleHealthKit["getMindfulSession"],
saveMindfulSession: AppleHealthKit["saveMindfulSession"],
getWorkoutRouteSamples: AppleHealthKit["getWorkoutRouteSamples"],
saveWorkout: AppleHealthKit["saveWorkout"],
getAuthStatus: AppleHealthKit["getAuthStatus"],
getLatestBloodAlcoholContent: AppleHealthKit["getLatestBloodAlcoholContent"],
getBloodAlcoholContentSamples: AppleHealthKit["getBloodAlcoholContentSamples"],
saveBloodAlcoholContent: AppleHealthKit["saveBloodAlcoholContent"],
getDistanceSwimming: AppleHealthKit["getDistanceSwimming"],
getDailyDistanceSwimmingSamples: AppleHealthKit["getDailyDistanceSwimmingSamples"],
getOxygenSaturationSamples: AppleHealthKit["getOxygenSaturationSamples"],
getElectrocardiogramSamples: AppleHealthKit["getElectrocardiogramSamples"],
saveBodyFatPercentage: AppleHealthKit["saveBodyFatPercentage"],
saveBodyTemperature: AppleHealthKit["saveBodyTemperature"],
getEnvironmentalAudioExposure: AppleHealthKit["getEnvironmentalAudioExposure"],
getHeadphoneAudioExposure: AppleHealthKit["getHeadphoneAudioExposure"],
getClinicalRecords: AppleHealthKit["getClinicalRecords"],
getActivitySummary: AppleHealthKit["getActivitySummary"],
getInsulinDeliverySamples: AppleHealthKit["getInsulinDeliverySamples"],
saveInsulinDeliverySample: AppleHealthKit["saveInsulinDeliverySample"],
deleteInsulinDeliverySample: AppleHealthKit["deleteInsulinDeliverySample"],
}
// console.log("AppleHealthKit: ",AppleHealthKit, "Kit=", Kit);
export const HealthKit = Object.assign({}, AppleHealthKit, {
Constants: {
Activities,
Observers,
Permissions,
Units,
},
})
module.exports = HealthKit
技术内容转载请注明来源,个人日记不允许转载,欢迎指出任何有错误或不够清晰的表达。可以邮件至 mousebomb@gmail.com