I am using this basic code to have a bot generate an invite link to a server - where guild ID is the string of my guild ID:
const Guild = await client.guilds.fetch(guildId);
const invite = await Guild.systemChannel.createInvite({
maxAge: 14,
maxUses: 10,
unique: true
});
Upon doing this, I receive the error:
TypeError: Cannot read properties of null (reading 'createInvite')
I wonder if anyone could possibly point out if I used this method incorrectly?
Just for some extra information, my guild object is returned fine as below:
<ref *2> Guild {
id: 'XXXXXXXXXX',
name: 'NAMEHERE',
icon: 'a_479390a16bfef56aee3c39330d4d2e3e',
features: [
'MEMBER_PROFILES',
'ROLE_ICONS',
'PRIVATE_THREADS',
'THREE_DAY_THREAD_ARCHIVE',
'SEVEN_DAY_THREAD_ARCHIVE',
'INVITE_SPLASH',
'BANNER',
'ANIMATED_ICON'
],
commands: <ref *1> GuildApplicationCommandManager {
permissions: ApplicationCommandPermissionsManager {
manager: [Circular *1],
guild: [Circular *2],
guildId: 'CENSORED',
commandId: null
},
guild: [Circular *2]
},
members: GuildMemberManager { guild: [Circular *2] },
channels: GuildChannelManager { guild: [Circular *2] },
bans: GuildBanManager { guild: [Circular *2] },
roles: RoleManager { guild: [Circular *2] },
presences: PresenceManager {},
voiceStates: VoiceStateManager { guild: [Circular *2] },
stageInstances: StageInstanceManager { guild: [Circular *2] },
invites: GuildInviteManager { guild: [Circular *2] },
deleted: false,
available: true,
shardId: 0,
splash: '53c57d1053959d572635640ef34aecce',
banner: null,
description: null,
verificationLevel: 'MEDIUM',
vanityURLCode: null,
nsfwLevel: 'DEFAULT',
discoverySplash: null,
memberCount: 459,
large: true,
applicationId: null,
afkTimeout: 300,
afkChannelId: null,
systemChannelId: null,
premiumTier: 'TIER_2',
premiumSubscriptionCount: 9,
explicitContentFilter: 'DISABLED',
mfaLevel: 'NONE',
joinedTimestamp: 1634610823632,
defaultMessageNotifications: 'ONLY_MENTIONS',
systemChannelFlags: SystemChannelFlags { bitfield: 0 },
maximumMembers: 250000,
maximumPresences: null,
approximateMemberCount: null,
approximatePresenceCount: null,
vanityURLUses: null,
rulesChannelId: null,
publicUpdatesChannelId: null,
preferredLocale: 'en-US',
ownerId: 'CENSORED',
emojis: GuildEmojiManager { guild: [Circular *2] },
stickers: GuildStickerManager { guild: [Circular *2] }
}
As per the discord.js docs for Guild#systemChannel, that property can be null, which means not every Guild has a systemChannel. You might want to check if it is null before the creating the invite, so you can choose another channel in case it is.
Finally getting around to updating my bot from v12 to v13 and having an issue that I can't seem to solve. I have an invite tracker that works perfectly on v12 but will not function on v13. I have included the code below, the commented lines are the v12 code that I know needed changing for v13.
// const Discord = require('discord.js')
const {
Client,
Intents
} = require('discord.js')
// const client = new Discord.Client({
// partials: ['MESSAGE', 'CHANNEL', 'REACTION']
// })
const client = new Client({
intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MEMBERS, Intents.FLAGS.GUILD_BANS, Intents.FLAGS.GUILD_EMOJIS_AND_STICKERS, Intents.FLAGS.GUILD_INTEGRATIONS, Intents.FLAGS.GUILD_WEBHOOKS, Intents.FLAGS.GUILD_INVITES, Intents.FLAGS.GUILD_VOICE_STATES, Intents.FLAGS.GUILD_PRESENCES, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Intents.FLAGS.GUILD_MESSAGE_TYPING, Intents.FLAGS.DIRECT_MESSAGES, Intents.FLAGS.DIRECT_MESSAGE_REACTIONS, Intents.FLAGS.DIRECT_MESSAGE_TYPING],
partials: ['MESSAGE', 'CHANNEL', 'REACTION']
})
const guildInvites = new Map()
// client.on('inviteCreate', async invite => guildInvites.set(invite.guild.id, await invite.guild.fetchInvites()))
client.on('inviteCreate', async invite => guildInvites.set(invite.guild.id, await invite.guild.invites.fetch()))
client.once('ready', () => {
client.guilds.cache.forEach(guild => {
//guild.fetchInvites()
guild.invites.fetch()
.then(invites => guildInvites.set(guild.id, invites))
.catch(err => {
console.log(err)
console.log(guildInvites)
client.channels.cache.get('channelId').send({
content: `${err}`
})
})
})
})
client.on('guildMemberAdd', async member => {
const cachedInvites = guildInvites.get(member.guild.id)
// const newInvites = await member.guild.fetchInvites()
const newInvites = await member.guild.invites.fetch()
guildInvites.set(member.guild.id, newInvites)
try {
const usedInvite = newInvites.find(inv => cachedInvites.get(inv.code).uses < inv.uses)
console.log(cachedInvites)
console.log(newInvites)
console.log(usedInvite)
console.log(`The code ${usedInvite.code} was just used by ${member.user.username}.`)
} catch (err) {
console.log(err)
client.channels.cache.get('channelId').send({
content: `${err}`
})
}
})
This is the console log result:
console.log(cachedInvites) => returns below
Collection(2) [Map] {
'11111111' => Invite {
guild: Guild {
id: 'xxxx',
name: "Testing Server",
icon: null,
features: [Array],
commands: [GuildApplicationCommandManager],
members: [GuildMemberManager],
channels: [GuildChannelManager],
bans: [GuildBanManager],
roles: [RoleManager],
presences: PresenceManager {},
voiceStates: [VoiceStateManager],
stageInstances: [StageInstanceManager],
invites: [GuildInviteManager],
deleted: false,
available: true,
shardId: 0,
splash: null,
banner: null,
description: null,
verificationLevel: 'LOW',
vanityURLCode: null,
nsfwLevel: 'DEFAULT',
discoverySplash: null,
memberCount: 3,
large: false,
applicationId: null,
afkTimeout: 900,
afkChannelId: 'xxxx',
systemChannelId: 'xxxx',
premiumTier: 'NONE',
premiumSubscriptionCount: 0,
explicitContentFilter: 'ALL_MEMBERS',
mfaLevel: 'NONE',
joinedTimestamp: 1633812225872,
defaultMessageNotifications: 'ONLY_MENTIONS',
systemChannelFlags: [SystemChannelFlags],
maximumMembers: 250000,
maximumPresences: null,
approximateMemberCount: null,
approximatePresenceCount: null,
vanityURLUses: null,
rulesChannelId: 'xxxx',
publicUpdatesChannelId: 'xxxx',
preferredLocale: 'en-US',
ownerId: 'xxxx',
emojis: [GuildEmojiManager],
stickers: [GuildStickerManager]
},
code: '11111111',
presenceCount: null,
memberCount: null,
temporary: false,
maxAge: 604800,
uses: 40,
maxUses: 0,
inviter: User {
id: 'xxxx',
bot: false,
system: false,
flags: [UserFlags],
username: 'xxxx',
discriminator: 'xxxx',
avatar: 'xxxx',
banner: undefined,
accentColor: undefined
},
targetUser: null,
targetApplication: null,
targetType: null,
channel: TextChannel {
type: 'GUILD_TEXT',
deleted: false,
guild: [Guild],
guildId: 'xxxx',
parentId: 'xxxx',
permissionOverwrites: [PermissionOverwriteManager],
messages: [MessageManager],
threads: [ThreadManager],
nsfw: false,
id: 'xxxx',
name: 'welcome',
rawPosition: 3,
topic: null,
lastMessageId: 'xxxx',
rateLimitPerUser: 0
},
createdTimestamp: 1633922331801,
_expiresTimestamp: null,
stageInstance: null
},
'22222222' => Invite {
guild: Guild {
id: 'xxxx',
name: "Testing Server",
icon: null,
features: [Array],
commands: [GuildApplicationCommandManager],
members: [GuildMemberManager],
channels: [GuildChannelManager],
bans: [GuildBanManager],
roles: [RoleManager],
presences: PresenceManager {},
voiceStates: [VoiceStateManager],
stageInstances: [StageInstanceManager],
invites: [GuildInviteManager],
deleted: false,
available: true,
shardId: 0,
splash: null,
banner: null,
description: null,
verificationLevel: 'LOW',
vanityURLCode: null,
nsfwLevel: 'DEFAULT',
discoverySplash: null,
memberCount: 3,
large: false,
applicationId: null,
afkTimeout: 900,
afkChannelId: 'xxxx',
systemChannelId: 'xxxx',
premiumTier: 'NONE',
premiumSubscriptionCount: 0,
explicitContentFilter: 'ALL_MEMBERS',
mfaLevel: 'NONE',
joinedTimestamp: 1633812225872,
defaultMessageNotifications: 'ONLY_MENTIONS',
systemChannelFlags: [SystemChannelFlags],
maximumMembers: 250000,
maximumPresences: null,
approximateMemberCount: null,
approximatePresenceCount: null,
vanityURLUses: null,
rulesChannelId: 'xxxx',
publicUpdatesChannelId: 'xxxx',
preferredLocale: 'en-US',
ownerId: 'xxxx',
emojis: [GuildEmojiManager],
stickers: [GuildStickerManager]
},
code: '22222222',
presenceCount: null,
memberCount: null,
temporary: false,
maxAge: 604800,
uses: 21,
maxUses: 0,
inviter: User {
id: 'xxxx',
bot: false,
system: false,
flags: [UserFlags],
username: 'xxxx',
discriminator: 'xxxx',
avatar: 'xxx',
banner: undefined,
accentColor: undefined
},
targetUser: null,
targetApplication: null,
targetType: null,
channel: TextChannel {
type: 'GUILD_TEXT',
deleted: false,
guild: [Guild],
guildId: 'xxxxx',
parentId: 'xxxx',
permissionOverwrites: [PermissionOverwriteManager],
messages: [MessageManager],
threads: [ThreadManager],
nsfw: false,
id: 'xxxx',
name: 'guest-chat',
rawPosition: 48,
topic: 'Guest Invitation Link',
lastMessageId: null,
rateLimitPerUser: 0
},
createdTimestamp: 1633969178889,
_expiresTimestamp: null,
stageInstance: null
}
}
console.log(newInvites) => returns below
Collection(2) [Map] {
'11111111' => Invite {
guild: Guild {
id: 'xxxx',
name: "Testing Server",
icon: null,
features: [Array],
commands: [GuildApplicationCommandManager],
members: [GuildMemberManager],
channels: [GuildChannelManager],
bans: [GuildBanManager],
roles: [RoleManager],
presences: PresenceManager {},
voiceStates: [VoiceStateManager],
stageInstances: [StageInstanceManager],
invites: [GuildInviteManager],
deleted: false,
available: true,
shardId: 0,
splash: null,
banner: null,
description: null,
verificationLevel: 'LOW',
vanityURLCode: null,
nsfwLevel: 'DEFAULT',
discoverySplash: null,
memberCount: 3,
large: false,
applicationId: null,
afkTimeout: 900,
afkChannelId: 'xxxx',
systemChannelId: 'xxxx',
premiumTier: 'NONE',
premiumSubscriptionCount: 0,
explicitContentFilter: 'ALL_MEMBERS',
mfaLevel: 'NONE',
joinedTimestamp: 1633812225872,
defaultMessageNotifications: 'ONLY_MENTIONS',
systemChannelFlags: [SystemChannelFlags],
maximumMembers: 250000,
maximumPresences: null,
approximateMemberCount: null,
approximatePresenceCount: null,
vanityURLUses: null,
rulesChannelId: 'xxxx',
publicUpdatesChannelId: 'xxxx',
preferredLocale: 'en-US',
ownerId: 'xxxx',
emojis: [GuildEmojiManager],
stickers: [GuildStickerManager]
},
code: '11111111',
presenceCount: null,
memberCount: null,
temporary: false,
maxAge: 604800,
uses: 40,
maxUses: 0,
inviter: User {
id: 'xxxx',
bot: false,
system: false,
flags: [UserFlags],
username: 'xxxx',
discriminator: 'xxxx',
avatar: 'xxxx',
banner: undefined,
accentColor: undefined
},
targetUser: null,
targetApplication: null,
targetType: null,
channel: TextChannel {
type: 'GUILD_TEXT',
deleted: false,
guild: [Guild],
guildId: 'xxxx',
parentId: 'xxxx',
permissionOverwrites: [PermissionOverwriteManager],
messages: [MessageManager],
threads: [ThreadManager],
nsfw: false,
id: 'xxxx',
name: 'welcome',
rawPosition: 3,
topic: null,
lastMessageId: 'xxxx',
rateLimitPerUser: 0
},
createdTimestamp: 1633922331801,
_expiresTimestamp: null,
stageInstance: null
},
'22222222' => Invite {
guild: Guild {
id: '878285237082271744',
name: "Testing Server",
icon: null,
features: [Array],
commands: [GuildApplicationCommandManager],
members: [GuildMemberManager],
channels: [GuildChannelManager],
bans: [GuildBanManager],
roles: [RoleManager],
presences: PresenceManager {},
voiceStates: [VoiceStateManager],
stageInstances: [StageInstanceManager],
invites: [GuildInviteManager],
deleted: false,
available: true,
shardId: 0,
splash: null,
banner: null,
description: null,
verificationLevel: 'LOW',
vanityURLCode: null,
nsfwLevel: 'DEFAULT',
discoverySplash: null,
memberCount: 3,
large: false,
applicationId: null,
afkTimeout: 900,
afkChannelId: 'xxxx',
systemChannelId: 'xxxx',
premiumTier: 'NONE',
premiumSubscriptionCount: 0,
explicitContentFilter: 'ALL_MEMBERS',
mfaLevel: 'NONE',
joinedTimestamp: 1633812225872,
defaultMessageNotifications: 'ONLY_MENTIONS',
systemChannelFlags: [SystemChannelFlags],
maximumMembers: 250000,
maximumPresences: null,
approximateMemberCount: null,
approximatePresenceCount: null,
vanityURLUses: null,
rulesChannelId: 'xxxx',
publicUpdatesChannelId: 'xxxx',
preferredLocale: 'en-US',
ownerId: 'xxxx',
emojis: [GuildEmojiManager],
stickers: [GuildStickerManager]
},
code: '22222222',
presenceCount: null,
memberCount: null,
temporary: false,
maxAge: 604800,
uses: 22,
maxUses: 0,
inviter: User {
id: 'xxxx',
bot: false,
system: false,
flags: [UserFlags],
username: 'xxxx',
discriminator: 'xxxx',
avatar: 'xxxx',
banner: undefined,
accentColor: undefined
},
targetUser: null,
targetApplication: null,
targetType: null,
channel: TextChannel {
type: 'GUILD_TEXT',
deleted: false,
guild: [Guild],
guildId: 'xxxx',
parentId: 'xxxx',
permissionOverwrites: [PermissionOverwriteManager],
messages: [MessageManager],
threads: [ThreadManager],
nsfw: false,
id: 'xxxx',
name: 'guest-chat',
rawPosition: 48,
topic: 'Guest Invitation Link',
lastMessageId: null,
rateLimitPerUser: 0
},
createdTimestamp: 1633969178889,
_expiresTimestamp: null,
stageInstance: null
}
}
console.log(usedInvite) => returns undefined
The error message I get is obviously:
TypeError: Cannot read property 'code' of undefined
The issue you are having most likely stems from the fact that you are saving the entire Invites Collection object in your guildInvites Map. Remember that in Javascript, when you save a single object in multiple different locations, each location still points to the same object. Basically, when you save the invites object or invite.guild.invites.fetch() to your guildInvites Map, it refers to the exact same object as newInvites will. In other words, cachedInvites and newInvites are both referring to the same object; because of this, they will contain the exact same values. Whenever an invite in newInvites is updated, it will automatically also update the invite in cachedInvites. This may be happening only now due to some changes in discord.js' code for invite management in v13.
I have not, however, looked at the discord.js source code for the new InviteManager, so it is possible that some other, similar issue is at play here. However, the solution in this answer works regardless.
Because the cache and new invite lists were both the same, the uses between the cached and used invite ended up being equal (causing the cachedInvites.get(inv.code).uses < inv.uses condition to not be met). Thus, newInvites.find() could not find the invite you were looking for, and usedInvite ended up being undefined.
There are several ways you could fix this issue. My preference is to not save the entire invites collection to your invite cache. Since you only need to know the cached invite's code and old number of uses, you only need to save that information. No need to save entire Invite objects to your cache when you only need two small pieces of information from each cached invite.
This is my proposed new structure of your cachedInvites. As you can see, it is much simpler and more efficient than before. It also solves the aforementioned possible JS issues with a single object being saved to multiple locations, by not directly saving the invites object in your cache.
Collection(2) [Map] {
'11111111' => 40,
'22222222' => 21
}
And here is my full solution, using this new, simpler structure for cached invites. I've tested it, and it works:
client.on('inviteCreate', async invite => {
const invites = await invite.guild.invites.fetch();
const codeUses = new Map();
invites.each(inv => codeUses.set(inv.code, inv.uses));
guildInvites.set(invite.guild.id, codeUses);
})
client.once('ready', () => {
client.guilds.cache.forEach(guild => {
guild.invites.fetch()
.then(invites => {
console.log("INVITES CACHED");
const codeUses = new Map();
invites.each(inv => codeUses.set(inv.code, inv.uses));
guildInvites.set(guild.id, codeUses);
})
.catch(err => {
console.log("OnReady Error:", err)
})
})
})
client.on('guildMemberAdd', async member => {
const cachedInvites = guildInvites.get(member.guild.id)
const newInvites = await member.guild.invites.fetch();
try {
const usedInvite = newInvites.find(inv => cachedInvites.get(inv.code) < inv.uses);
console.log("Cached", [...cachedInvites.keys()])
console.log("New", [...newInvites.values()].map(inv => inv.code))
console.log("Used", usedInvite)
console.log(`The code ${usedInvite.code} was just used by ${member.user.username}.`)
} catch (err) {
console.log("OnGuildMemberAdd Error:", err)
}
newInvites.each(inv => cachedInvites.set(inv.code, inv.uses));
guildInvites.set(member.guild.id, cachedInvites);
});
I have a script where a user can specify a channel to be the welcome channel and it will save the channel in quick.db but when I want to send an embed to the specified channel it won't let me. So I console.log()
and I saw that it returned everything.
TextChannel {
type: 'text',
deleted: false,
id: '730763402229841980',
name: '�┊�è�������',
rawPosition: 1,
parentID: '730762991502622752',
permissionOverwrites: Collection [Map] {},
topic: null,
nsfw: false,
lastMessageID: '739703571565641748',
rateLimitPerUser: 0,
lastPinTimestamp: null,
guild: Guild {
members: GuildMemberManager {
cacheType: [Function: Collection],
cache: [Collection [Map]],
guild: [Circular]
},
channels: GuildChannelManager {
cacheType: [Function: Collection],
cache: [Collection [Map]],
guild: [Circular]
},
roles: RoleManager {
cacheType: [Function: Collection],
cache: [Collection [Map]],
guild: [Circular]
},
presences: PresenceManager {
cacheType: [Function: Collection],
cache: [Collection [Map]]
},
voiceStates: VoiceStateManager {
cacheType: [Function: Collection],
cache: Collection [Map] {},
guild: [Circular]
},
deleted: false,
available: true,
id: '730762360272191508',
shardID: 0,
name: 'Serv sans nom',
icon: null,
splash: null,
region: 'southafrica',
memberCount: 6,
large: false,
features: [],
applicationID: null,
afkTimeout: 300,
afkChannelID: null,
systemChannelID: null,
embedEnabled: undefined,
premiumTier: 0,
premiumSubscriptionCount: 0,
verificationLevel: 'NONE',
explicitContentFilter: 'DISABLED',
mfaLevel: 0,
joinedTimestamp: 1596429038364,
defaultMessageNotifications: 'ALL',
systemChannelFlags: SystemChannelFlags { bitfield: 0 },
vanityURLCode: null,
description: null,
banner: null,
rulesChannelID: null,
publicUpdatesChannelID: null,
ownerID: '380421367704584193',
cacheType: [Function: Collection],
cache: Collection [Map] {},
guild: [Circular]
}
},
messages: MessageManager {
cacheType: [Function: LimitedCollection],
cache: LimitedCollection [Map] { maxSize: 200 },
channel: [Circular]
},
_typing: Map {}
}
The method I used to get the channel
Client.on('guildMemberAdd', member => {
console.log(db.get(`wl_channel`))
const welcome = db.get(`wl_YN${member.guild.id}`)
const embed = new Discord.MessageEmbed()
.setTitle(`Welcome ***${member.displayName}***`)
.setColor("#2163D7")
.addFields({ name: `**${member.displayName}**`, value: 'Please read the **rules**'},{ name: `You are our ` , value: `***${member.guild.memberCount}*** th member!`})
.setImage(member.user.avatarURL())
.setThumbnail(member.user.avatarURL())
if(welcome === true){
console.log(member.guild.channels.cache.get(db.get(`wl_channel`).id))
}
});
How I saved the channel
db.set(`wl_channel`, message.mentions.channels.first().id)
Any help is appreciated
Store the channels name in the database:
db.set(`wl_channel`, message.mentions.channels.first().name)
Then obtain the channel using the following:
Client.on('guildMemberAdd', member => {
console.log(db.get(`wl_channel`))
let welcomeChannel = db.get(`wl_channel`)
const welcome = db.get(`wl_YN${member.guild.id}`)
const embed = new Discord.MessageEmbed()
.setTitle(`Welcome ***${member.displayName}***`)
.setColor("#2163D7")
.addFields({ name: `**${member.displayName}**`, value: 'Please read the **rules**'},{ name: `You are our ` , value: `***${member.guild.memberCount}*** th member!`})
.setImage(member.user.avatarURL())
.setThumbnail(member.user.avatarURL())
if(welcome === true){
let channel = message.channels.find(channel => channel.name === welcomeChannel);
channel.send(embed);
}
});
I'm using Pact for the api test in React project. But I can't get the data that I expect from the response.
I think there is no mistake in the Pact configuration.
Here is my test code with Pact.
const { Pact } = require('#pact-foundation/pact');
const { getAllServices } = require('./index.ts');
describe('The API', () => {
const res = [{
id: '1',
name: 'service1'
},{
id: '2',
name: 'service2'
},{
id: '3',
name: 'service3'
}]
describe("Services API testing", () => {
beforeEach(() => {
const interaction = {
uponReceiving: "",
withRequest: {
method: 'GET',
path: '',
query: '',
headers: {
Accept: 'application/json'
}
},
willRespondWith: {
status: 200,
headers: {
'Content-Type': 'application/json'
},
body: res
}
};
return provider.addInteraction(interaction);
});
it('returns all services', (done) => {
return getAllServices()
.then(response => {
expect(response.data).toEqual(res);
done()
})
.then(() => provider.verify());
});
});
});
This is data format I got.
Body {
url: 'http://192.168.0.73:8080/services',
status: 200,
statusText: 'OK',
headers:
Headers {
_headers:
{ 'content-type': [Array],
'transfer-encoding': [Array],
date: [Array],
connection: [Array] } },
ok: true,
body:
PassThrough {
_readableState:
ReadableState {
objectMode: false,
highWaterMark: 16384,
buffer: [Object],
length: 2743,
pipes: null,
pipesCount: 0,
flowing: null,
ended: false,
endEmitted: false,
reading: true,
sync: false,
needReadable: true,
emittedReadable: true,
readableListening: false,
resumeScheduled: false,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null },
readable: true,
domain: null,
_events:
{ end: [Object],
prefinish: [Function: prefinish],
unpipe: [Function: onunpipe],
drain: [Function],
error: [Function: onerror],
close: [Object],
finish: [Object] },
_eventsCount: 7,
_maxListeners: undefined,
_writableState:
WritableState {
objectMode: false,
highWaterMark: 16384,
finalCalled: false,
needDrain: false,
ending: false,
ended: false,
finished: false,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: false,
bufferProcessing: false,
onwrite: [Function: bound onwrite],
writecb: null,
writelen: 0,
bufferedRequest: null,
lastBufferedRequest: null,
pendingcb: 0,
prefinished: false,
errorEmitted: false,
bufferedRequestCount: 0,
corkedRequestsFree: [Object] },
writable: true,
allowHalfOpen: true,
_transformState:
{ afterTransform: [Function: bound afterTransform],
needTransform: true,
transforming: false,
writecb: null,
writechunk: null,
writeencoding: 'buffer' } },
bodyUsed: false,
size: 0,
timeout: 0,
_raw: [],
_abort: false }
Please share your fix or tips if you faced such this thing before or you have any good point.
I will appreciate your any posts.
Thanks in advance.
This looks like it's not a problem related to pact - the data format looks like you're using fetch, but aren't using the API correctly.
try swapping:
return getAllServices()
.then(response => {
expect(response.data).toEqual(res);
done()
})
for:
return getAllServices()
.then(response => {
expect(response.json()).toEqual(res);
done()
})
As a style point, Pact is supposed to test your entire API layer. To stick to this style, I would actually move the response.json() call inside getAllServices().