开发者问题收集

导入mp3时“找不到模块”错误

2021-04-08
2322

我在 NextJS 应用中使用 useSound,我想播放位于 /public/static 中的 mp3:

import notification from "../../public/static/notification.mp3"

运行 yarn dev 时可以正常工作(声音正在播放,没有错误),但在使用 yarn prod 构建时会引发错误:

Type error: Cannot find module '../../public/static/notification.mp3' or its corresponding type declarations.

有人可以帮我吗?我一直在互联网/SO/github 上查找,并尝试了几件事,包括修改 next.config.js

webpack(config, { isServer }) {
    config.module.rules.push({
      test: /\.(ogg|mp3|wav|mpe?g)$/i,
      exclude: config.exclude,
      use: [
        {
          loader: require.resolve('url-loader'),
          options: {
            limit: config.inlineImageLimit,
            fallback: require.resolve('file-loader'),
            publicPath: `${config.assetPrefix}/_next/static/`,
            outputPath: `${isServer ? '../' : ''}static/`,
            name: '[name]-[hash].[ext]',
            esModule: config.esModule || false,
          },
        },
      ],
    });
    return config;
  },

没有成功..

1个回答

好的,显然就这么简单:使用

declare module '*.mp3' {
  const src: string;
  export default src;
}
更新 next-env.d.ts

如果有人可以解释它是如何工作的,那就太好了。

Binajmen
2021-04-08