使用@discordjs/voice创建播放器时遇模块缺失及函数错误求助
解决@discordjs/voice模块缺失及createAudioPlayer调用错误问题
问题现象
- 安装@discordjs/voice后启动项目,提示找不到
E:\Bots\DgF Bot\node_modules\@discordjs\voice\dist\index.js文件 - 手动创建dist文件夹并添加index.js后,出现
TypeError: createAudioPlayer is not a function错误 - 已尝试卸载重装discord.js和@discordjs/voice,问题未解决
初始报错日志
$ nodemon [nodemon] 2.0.22 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node index.js` node:internal/modules/cjs/loader:571 throw e; ^ Error: Cannot find module 'E:\Bots\DgF Bot\node_modules\@discordjs\voice\dist\index.js' at createEsmNotFoundErr (node:internal/modules/cjs/loader:1096:15) at finalizeEsmResolution (node:internal/modules/cjs/loader:1089:15) at resolveExports (node:internal/modules/cjs/loader:565:14) at Module._findPath (node:internal/modules/cjs/loader:634:31) at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27) at Module._load (node:internal/modules/cjs/loader:920:27) at Module.require (node:internal/modules/cjs/loader:1141:19) at require (node:internal/modules/cjs/helpers:110:18) at Object.<anonymous> (E:\Bots\DgF Bot\index.js:25:64) at Module._compile (node:internal/modules/cjs/loader:1254:14) { code: 'MODULE_NOT_FOUND', path: 'E:\\Bots\\DgF Bot\\node_modules\\@discordjs\\voice\\package.json' }
手动创建dist后的报错日志
$ nodemon [nodemon] 2.0.22 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node index.js` E:\Bots\DgF Bot\index.js:26 const player = createAudioPlayer(); ^ TypeError: createAudioPlayer is not a function at Object.<anonymous> (E:\Bots\DgF Bot\index.js:26:16) at Module._compile (node:internal/modules/cjs/loader:1254:14) at Module._extensions..js (node:internal/modules/cjs/loader:1308:10) at Module.load (node:internal/modules/cjs/loader:1117:32) at Module._load (node:internal/modules/cjs/loader:958:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:23:47
用到的代码片段
const ytdl = require('ytdl-core-discord'); const { createAudioPlayer, createAudioResource, StreamType } = require('@discordjs/voice'); const player = createAudioPlayer();
解决方案
1. 彻底清理依赖并重新安装
- 删除项目根目录下的
node_modules文件夹 - 删除
package-lock.json或yarn.lock文件(根据使用的包管理器选择) - 执行命令重新安装所有依赖:
这一步可解决多数依赖安装不完整问题,缺失dist文件夹大概率是安装过程中断或缓存异常导致。npm install # 若使用yarn则执行: yarn install
2. 检查Node.js版本兼容性
@discordjs/voice要求Node.js版本16.9.0及以上(推荐使用18.x或20.x LTS版本)。查看当前版本:
node -v
若版本过低,升级后重新安装依赖。
3. 确认导入方式正确性
@discordjs/voice支持CommonJS和ES模块两种导入方式,若重新安装后问题仍存在,可尝试切换导入方式:
- 将脚本文件扩展名改为
.mjs,并使用ES模块导入:import ytdl from 'ytdl-core-discord'; import { createAudioPlayer, createAudioResource, StreamType } from '@discordjs/voice'; const player = createAudioPlayer(); - 或在
package.json中添加"type": "module"配置,使.js文件默认以ES模块方式加载。
4. 排除第三方工具干扰
若使用nodemon等工具启动项目,可尝试直接用node index.js启动,排除工具配置对模块加载的影响。
内容的提问来源于stack exchange,提问作者DgFLocke
相关产品推荐
相关产品推荐

