react-native - require()必须有一个单词字符串文字参数

时间:2017-10-31 19:06:28

标签: react-native

我正在使用Expo在React-Native中编写一个采样器应用,并遇到了以下错误:

react-native - require() must have a sing string literal argument

播放预先录制的样本,如下所示:

const SAMPLES = [
  { name: 'air horn', uri: require('../samples/air_horn.mp3') },
  { name: 'rim shot', uri: require('../samples/rimshot.mp3') },
]

  playSample = (uri) => {
    const { soundObject, status } = Expo.Audio.Sound.create(
      uri,
      { shouldPlay: true }
    )
  }

它有点基于the Expo documentation,并且工作正常。但是,我还希望用户记录他们自己的样本,这意味着它来自自定义URL:

playCustomSample = () => {
  const customSample = this.props.navigation.state.params
    ? require(this.props.navigation.state.params.custom.toString())
    : require('./samples/blank.mp3')
  try {
    const { soundObject, status } = Expo.Audio.Sound.create(
      customSample,
      { shouldPlay: true }
    )
  } catch(error) {
    console.log('ERROR:', error)
  }

当我记录custom param我正在通过导航时,它就在那里。所以我知道我在概念上做错了 - require()需要一个字符串,但在记录之前我不会知道文件的名称/位置。

如何在不事先知道链接的情况下访问音频文件,以便我可以包含它?

此外,我无法访问Mac,因此将其从Expo中弹出,因此使用反应原生音频或反应本机声音等功能不是一种选择。

0 个答案:

没有答案