Я пытаюсь воспроизвести звук в приложении, созданном с помощью expo-cli.
Код написан на машинописном тексте, и код, вызывающий сбой, выглядит следующим образом, взятый из экспозиции .Документация .io :
import * as React from 'react'
import { WorkoutComponent } from "./WorkoutExecutor";
import { Audio } from 'expo';
export default class AudioPlayer {
private async playAudio(fileName: string) {
console.log("Playing Audio: " + fileName);
const soundFile = './assets/sounds/' + fileName + '.mp3';
try {
const { sound: soundObject, status } = await Audio.Sound.createAsync(
require(soundFile),
{ shouldPlay: true }
);
// Your sound is playing!
} catch (error) {
console.log(error);
// An error occurred!
}
}
[...]
}
Когда приложение загружается, оно выдает следующую ошибку, даже до того, как оно выходит на экран со звуком
[...]\src\AudioPlayer.ts:Invalid call at line 13: require(soundFile)
Я понимаю, чтоНапример, с javascript, а не с машинописью, но чего мне не хватает?
Мой tsconfig.json - тот, что из примера с машинописью, и выглядит так:
{
"compilerOptions": {
"baseUrl": "./src",
"esModuleInterop": true,
"experimentalDecorators": true,
"forceConsistentCasingInFileNames": true,
"importHelpers": true,
"jsx": "react-native",
"module": "es2015",
"moduleResolution": "node",
"noEmitHelpers": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
// Using the type definitions in @types/expo becuase they are still better than the ones provided by expo. See SvgScreen.tsx and SystemFontsScreen.tsx.
"paths": {
"expo": [
"../node_modules/@types/expo",
"../node_modules/expo"
],
},
"skipLibCheck": true,
"strict": true,
"target": "es2017"
},
"exclude": [
"node_modules"
]
}