如何在自定义Node.js npm包中访问本地音频文件并播放?
解决npm包中音频文件的访问问题
问题出在你使用了绝对路径 /sounds/soft_click_1s.wav,这个路径会指向项目根目录,而npm包安装后音频文件的实际位置并非根目录下的sounds文件夹,导致无法找到文件。以下是可行的解决方法:
方法一:用相对路径结合Node.js路径模块获取正确路径
根据你的模块类型选择对应代码:
CommonJS模块(默认的index.js)
const path = require('path'); // 拼接出音频文件的正确绝对路径 const audioFilePath = path.join(__dirname, 'sounds', 'soft_click_1s.wav'); const audio = new Audio(audioFilePath); audio.play();
ES模块(需在package.json中设置"type": "module")
import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const audioFilePath = join(__dirname, 'sounds', 'soft_click_1s.wav'); const audio = new Audio(audioFilePath); audio.play();
__dirname 会指向当前index.js所在目录,通过path.join拼接路径能保证跨Windows、Linux等系统的路径格式正确性。
方法二:确保npm包发布时包含音频文件
在package.json中添加files字段,明确指定需要发布的文件/目录,避免音频文件被npm忽略:
{ "files": [ "sounds/", "index.js" ] }
内容的提问来源于stack exchange,提问作者The Blind Hawk
相关产品推荐
相关产品推荐

