voice
voice copied to clipboard
discordjs/voice TypeScript's definition "import" causes a TypeScript compilation error
Issue description
Steps to reproduce the issue :
-
Install discordjs/voice via npm
-
npm install @discordjs/voice
-
-
Install discordjs/opus via npm
-
npm install @discordjs/opus
-
-
Install sodium via npm
-
npm install sodium
-
-
Verify that npm had installed these version of those packages :
- @discordjs/voice v0.7.5
- @discordjs/opus v0.5.3
- sodium v3.0.2
-
Create a starting point for the bot (in a src folder), could be a simple ping and pong command
-
creates tsconfig.json with these contents :
{
"compilerOptions": {
"module": "commonjs",
"target": "es2020",
"jsx": "preserve",
"strictFunctionTypes": true,
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"outDir": "./build",
"rootDir": "./src",
"typeRoots": [
"./node_modules/@types",
"./node_modules/discord.js/typings",
"./node_modules/@discordjs/voice",
]
},
"exclude": [
"./node_modules/@discordjs",
"node_modules",
"**/node_modules/*",
]
}
adjust the tsconfig's if you have different source and build folder.
-
Run typescript compilation
-
tsc -p tsconfig.json
-
-
Enjoy the error :
Module '"${ProjectPath}/node_modules/prism-media/typings/index"' has no default export.
- From : ${ProjectPath}/node_modules/@discordjs/voice/dist/index.d.ts, Line 2
Module '"${ProjectPath}/node_modules/@types/ws/index"' can only be default-imported using the 'esModuleInterop' flag
- From : ${ProjectPath}/node_modules/@discordjs/voice/dist/index.d.ts, Line 5
Code sample
${ProjectPath}/node_modules/@discordjs/voice/dist/index.d.ts, contents :
import { Readable, ReadableOptions } from 'node:stream';
import prism from 'prism-media';
import { TypedEmitter } from 'tiny-typed-emitter';
import { GatewayVoiceServerUpdateDispatchData, GatewayVoiceStateUpdateDispatchData } from 'discord-api-types/v9';
import WebSocket, {MessageEvent} from 'ws';
@discordjs/voice version
0.7.5
Node.js version
v17.2.0
Operating system
Linux, BTW I use "linux 5.15.5.arch1-1" kernel
Priority this issue should have
Medium (should be fixed soon)
Temporary fix I have currently, replace the ${ProjectPath}/node_modules/@discordjs/voice/dist/index.d.ts
from line 1 to 6 with these :
import { Readable, ReadableOptions } from 'node:stream';
import * as prism from 'prism-media';
import { TypedEmitter } from 'tiny-typed-emitter';
import { GatewayVoiceServerUpdateDispatchData, GatewayVoiceStateUpdateDispatchData } from 'discord-api-types/v9';
import * as WebSocket from 'ws';
import { MessageEvent } from 'ws';
Differences between the original and my temporary fix :
import { Readable, ReadableOptions } from 'node:stream';
import prism from 'prism-media'; // - Original
import * as prism from 'prism-media'; // + Modified
import { TypedEmitter } from 'tiny-typed-emitter';
import { GatewayVoiceServerUpdateDispatchData, GatewayVoiceStateUpdateDispatchData } from 'discord-api-types/v9';
import WebSocket, {MessageEvent} from 'ws'; // - Original
import * as WebSocket from 'ws'; // + Modified
import { MessageEvent } from 'ws'; // + Modified