Node.js module.exports找不到模块

Node.js module.exports找不到模块,node.js,discord.js,Node.js,Discord.js,我想为机器人制作一个帮助命令,显示特定公会的前缀。这是我的help.js文件:- const Discord = require('discord.js'); module.exports = { name: 'help', description: 'Neptune Premium Commands', execute(client, message, args){ const { guildPrefix } = require('../../main

我想为机器人制作一个帮助命令,显示特定公会的前缀。这是我的
help.js
文件:-

const Discord = require('discord.js');

module.exports = {
    name: 'help',
    description: 'Neptune Premium Commands',
    execute(client, message, args){
        const { guildPrefix } = require('../../main.js');

        const embed = new Discord.MessageEmbed()
        .setAuthor(`Prefix : ${guildPrefix}`, message.author.displayAvatarURL( {dynamic: true} ))
        .setDescription(`Neptune Premium Commands List.`)
        .addFields(
            {name: `moderation`, value: '`kick` `ban` `lock` `unlock` `purge` `warn` `delwarn` `mute` `unmute`'},
            {name: `utility`, value: '`prefix` `timedif` `greet` `userinfo` `serverinfo` `snipe`'},
            {name: `misc`, value: '`help` `support` `vote` `invite`'}
        )
        .setFooter(message.guild.name, message.guild.iconURL( {dynamic: true} ))

        message.channel.send(embed)
    }
}
const Discord = require('discord.js');
const client = new Discord.Client();
const fs = require('fs');

const config = require('./config.json');

const prefix = require('discord-prefix');

const defaultPrefix = config.prefix;

// .. ignoring some part of the code ...

client.on('message', message =>{
    
    // prefix db part
    if (!message.guild) return;

    let guildPrefix = prefix.getPrefix(message.guild.id);

    if (!guildPrefix) guildPrefix = defaultPrefix;

    if(message.content === '<@!849854849351942144>'){
        message.channel.send(`My Prefix is \`${guildPrefix}\`. Use \`${guildPrefix}help\` for my commands!`)
    }

    if(message.channel.type === 'dm') return;

    // discord.js command handler
    if(!message.content.startsWith(guildPrefix) || message.author.bot) return;

    const args = message.content.slice(guildPrefix.length).split(/ +/);
    const cmd = args.shift().toLowerCase();

    const command = client.commands.get(cmd) || client.commands.find(command => command.aliases && command.aliases.includes(cmd));

// ...
使用
$help
后,前缀显示为未定义

这是我的
main.js
文件:-

const Discord = require('discord.js');

module.exports = {
    name: 'help',
    description: 'Neptune Premium Commands',
    execute(client, message, args){
        const { guildPrefix } = require('../../main.js');

        const embed = new Discord.MessageEmbed()
        .setAuthor(`Prefix : ${guildPrefix}`, message.author.displayAvatarURL( {dynamic: true} ))
        .setDescription(`Neptune Premium Commands List.`)
        .addFields(
            {name: `moderation`, value: '`kick` `ban` `lock` `unlock` `purge` `warn` `delwarn` `mute` `unmute`'},
            {name: `utility`, value: '`prefix` `timedif` `greet` `userinfo` `serverinfo` `snipe`'},
            {name: `misc`, value: '`help` `support` `vote` `invite`'}
        )
        .setFooter(message.guild.name, message.guild.iconURL( {dynamic: true} ))

        message.channel.send(embed)
    }
}
const Discord = require('discord.js');
const client = new Discord.Client();
const fs = require('fs');

const config = require('./config.json');

const prefix = require('discord-prefix');

const defaultPrefix = config.prefix;

// .. ignoring some part of the code ...

client.on('message', message =>{
    
    // prefix db part
    if (!message.guild) return;

    let guildPrefix = prefix.getPrefix(message.guild.id);

    if (!guildPrefix) guildPrefix = defaultPrefix;

    if(message.content === '<@!849854849351942144>'){
        message.channel.send(`My Prefix is \`${guildPrefix}\`. Use \`${guildPrefix}help\` for my commands!`)
    }

    if(message.channel.type === 'dm') return;

    // discord.js command handler
    if(!message.content.startsWith(guildPrefix) || message.author.bot) return;

    const args = message.content.slice(guildPrefix.length).split(/ +/);
    const cmd = args.shift().toLowerCase();

    const command = client.commands.get(cmd) || client.commands.find(command => command.aliases && command.aliases.includes(cmd));

// ...
const Discord=require('Discord.js');
const client=new Discord.client();
常数fs=要求('fs');
const config=require('./config.json');
常量前缀=require('discord-prefix');
const defaultPrefix=config.prefix;
// .. 忽略代码的某些部分。。。
client.on('message',message=>{
//前缀db部分
如果(!message.guild)返回;
让guildPrefix=prefix.getPrefix(message.guild.id);
如果(!guildPrefix)guildPrefix=defaultPrefix;
如果(message.content==''){
message.channel.send(`My Prefix是\${guildPrefix}\`。对于我的命令使用\${guildPrefix}help\`)
}
if(message.channel.type==='dm')返回;
//discord.js命令处理程序
如果(!message.content.startsWith(guildPrefix)| | message.author.bot)返回;
const args=message.content.slice(guildPrefix.length.split(+/);
const cmd=args.shift().toLowerCase();
const command=client.commands.get(cmd)| client.commands.find(command=>command.alias&&command.alias.includes(cmd));
// ...

我忽略了主代码的某些部分,只添加了前缀部分。为此,我使用了一个名为
discord prefix
的包。

需要
main.js
中导出
前缀时,您得到
未定义的
的原因是您从未导出

如果您想通过使用
require
获取
前缀
,则必须执行以下操作:

main.js
const serverPrefix='!';
exports.prefix=服务器前缀;
//这也将有助于:
module.exports.prefix=服务器前缀;
help.js
const{prefix}=require('./main.js');
//或:
const prefix=require('./main.js')。前缀;
您可以阅读有关导出的更多信息


但是您正在使用一个名为
npm包
,如果您查看这些示例,您应该注意到有两种有趣的方法:

  • .setPrefix()
  • .getPrefix()
因此,如果您想获得在
main.js
中指定的前缀,那么在
help.js
中,您必须使用
.getPrefix()
函数。但在此之前,您必须先使用
.setPrefix()
设置前缀:

main.js
const prefix=require('discord-prefix');
//这是可选的,您也可以改用message.guild
const{guild}=消息
如果(!prefix.getPrefix(guild.id))prefix.setPrefix(“!”,guild.id);
然后,您可以使用
.getPrefix
函数获取前缀:

help.js
const prefix=require('discord-require');
const{guild}=消息;
const guildPrefix=prefix.getPrefix(guild.id);

或者。。。 …您可以使用
.env
文件。这要简单得多(在我看来),在将所有
每服务器设置
移动到
数据库
之前,我也使用了它。因此,您必须安装并创建一个名为
.env
的文件

现在,如果您想为您的
设置
前缀(特定服务器),您需要如下设置:

例子 既然您已经成功地创建了
.env
文件并定义了一些
变量
,那么您必须
main.js
中要求使用该新包:

main.js
require('dotenv').config()
现在,您可以在任何地方获取定义的
变量了,如下所示:

help.js
//不必将其分配给变量
常量前缀=process.env.prefix
//此架构适用于在.env中定义的每个变量:
process.env.LOGINTOKEN
process.env.WELCOMECHANNEL
//等等。。。


请确保将
.env
文件添加到
.gitignore
(如果使用git存储代码)

你如何在
main.js
中导出你的
prefix
?我首先通过
const defaultPrefix=config.prefix;
config.json
导出它,然后为一个特定的公会导出
guildPrefix
。我要发送我的
main.js
文件吗?是的,只要根据你的问题更新它,这可能会帮助我们解决你的问题r问题:当然,我已经更新了代码哦,天哪,这是很多信息,非常感谢!!我会尽快更新我的代码没有问题,我们是来帮助你的^^^并让我知道你的代码现在是否工作^^是的,它完全工作了那太好了^^