在 TypeScript 中导入音频文件

IT技术 javascript reactjs typescript
2022-07-18 01:37:31

我在我的 TypeScript/React 应用程序(使用 create-react-app 制作)中导入音频文件时遇到问题。

我正在尝试像这样导入文件:

import note from "./audio/note1s.mp3";

但是我收到了 TypeScript 错误,上面写着:

找不到module“./audio/note1s.mp3”或其相应的类型声明。

如果我// @ts-ignore在该行上方添加以忽略错误,则代码运行良好,并且我能够按预期使用该文件。

如何配置我的项目以消除这些错误?我对 TypeScript 还很陌生,所以我确定我缺少一些东西。我不想@ts-ignore每次导入文件时都添加这些行。

2个回答

import语句通常用于导入 JavaScript/TypeScript 文件。Create-react-app使用样式表、图像和字体扩展了这个列表。

音频或视频等资源应移动到public/您的文件夹中,create-react-app并且可以直接从 HTML 输出中引用。

例如:将您的note1s.mp3文件放到public/audio/note1s.mp3.

/audio/note1s.mp3使用(不带)将音频嵌入到您的 App.js 中public/

return (
        <div className="App">
            <figure>
                <figcaption>Play audio file:</figcaption>
                <audio
                    controls
                    src="/audio/note1s.mp3">
                    Your browser does not support the
                    <code>audio</code> element.
                </audio>
            </figure>
        </div>
    );

一种解决方案

...我发现是这样使用它的:

const note = require('./audio/note1s.mp3');

所以在那之后你可以将它与像这样的库一起使用use-sound

const [play, { stop }] = useSound(note);

typescript方式的另一种解决方案:

只需将类型添加到声音文件扩展名中,就像项目中添加一个名为如下的新文件audio.d.ts

declare module "*.mp3";
declare module "*.wav";

之后你可以:

import note from './audio/note1s.mp3';