2

我是 React-Native 的新手,正在构建我的第一个应用程序。我正在尝试使用这个来构建一个简单的计步应用程序。我做了 npm install 和 react-natvie 链接。我正在尝试以与页面上提到的库所有者相同的方式进行复制。

但我仍然收到以下错误:

TypeError: undefined is not an object (evaluating 
'BMDPedometer.isStepCountingAvailable')
: This error is located at:
in StepsCounter (at App.js:26)
in App (at renderApplication.js:32)
in RCTView (at View.js:43)
in RCTView (at View.js:43)
in AppContainer (at renderApplication.js:31)
TypeError: undefined is not an object (evaluating'BMDPedometer.isStepCountingAvailable')

这是我的 StepsCounter.android.js

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import Pedometer from '@asserdata/react-native-universal-pedometer';

export default class StepsCounter extends Component{

constructor(){
    Pedometer.isStepCountingAvailable((error,isAvailable)=>{
if(error) throw error;
        console.log("Working");
    })
}

render()
{
    return(
    <View>
        <Text> Brooooo</Text>
    </View>
    );
}
    }

这是我的 App.js

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View,AppRegistry} from 'react-native';
import ReactNative from 'react-native';
import Pedometer from '@asserdata/react-native-universal-pedometer';
import StepsCounter from './components/stepscounter';

const instructions = Platform.select({
ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
android:
'Double tap R on your keyboard to reload,\n' +
'Shake or press menu button for dev menu',
});

type Props = {};
export default class App extends Component<Props> {
render() {
return (
  <StepsCounter/>
);
}
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});

// ReactNative.AppRegistry.registerComponent('StepsCounter',()=> App);
4

1 回答 1

1

首先,一个问题是您使用的是实际包的未维护分支,react-native-universal-pedometer. 您将需要删除它添加的链接并将其删除:

react-native unlink @asserdata/react-native-universal-pedometer
yarn remove @asserdata/react-native-universal-pedometer

接下来,因为react-native-universal-pedometer还有一个问题,因为它们react-native作为包的依赖项而不是对等 dep 包含在内,因此您很可能最终会遇到版本冲突。

在等待维护者发布包含此修复的新 npm 版本时,您可以直接从 Github 安装该软件包:

yarn add smekalka/react-native-universal-pedometer
react-native link

这将采用不再存在依赖项的 repo 的主版本。

我制作了一个示例存储库,您可以在此处查看我可以成功调用的位置isStepCountingAvailable,而不会出现任何错误。

请注意,我yarn用于管理我的部门,但您npm显然可以使用

于 2018-12-09T11:26:02.297 回答