得到此错误 - 未定义不是对象(评估RNSound.IsAndroid)
我已经使用过this-react-native link react-native-sound
my index.android.js code is-
import React from 'react';
import { TouchableWithoutFeedback, Text } from 'react-native';
import Sound from 'react-native-sound';
class MyComponent extends Component {
playSound() {
const mySound = new Sound('x.mp3', Sound.MAIN_BUNDLE, (e) => {
if (e) {
console.log('error', e);
} else {
console.log('duration', mySound.getDuration());
mySound.play();
}
});
}
render() {
return (
<TouchableWithoutFeedback onPress={this.playSound.bind(this)}>
<Text>Play Sound!</Text>
</TouchableWithoutFeedback>
);
}
}
答案 0 :(得分:4)
大多数情况下,此错误表示程序包未正确链接。
确认是否是这种情况: -
android/app/src/main/java/.../MainApplication.java
import com.zmxv.RNSound.RNSoundPackage;
确保此方法具有此调用new RNSoundPackage()
,如下所示。
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNSoundPackage() // <-- New
);
}
如果这不起作用,请按照此Wiki中所述的手动过程进行操作:https://github.com/zmxv/react-native-sound/wiki/Installation
答案 1 :(得分:1)
我通过停止反应包装程序解决了这个问题,运行以下命令:
rm -rf node_modules/
npm install
react-native link react-native-sound
rn-nodeify --install --hack
清理项目并重新构建应用程序。 rn-nodeify
是为非反应原生包创建的,但在我的情况下,这适用于react-native-sound
。
答案 2 :(得分:0)
解决了它:
将package.json文件中的react-native-sound依赖关系更新为:
"react-native-sound": "git+ssh://git@github.com:zmxv/react-native-sound.git#HEAD"
开火npm install
。
答案 3 :(得分:0)
我已通过X代码中的手动链接库解决了此问题,实际上我确实做了react-native链接,该链接未给出任何错误,因此假定它已链接,但是当我检查xcode时,则看到此库未链接,所以当我拥有手动链接并创建新版本,然后运行良好。
答案 4 :(得分:0)
react-native link react-native-sound
cd ios
pod install
fixed my problem
注意
答案 5 :(得分:0)
修复了本机反应0.61.5的错误: 在Podfile中添加
pod'RNSound',:path =>'../ node_modules / react-native-sound'
pod安装