Javascript Node.js Discord Bot:TypeError:无法读取属性';消息';未定义的

Javascript Node.js Discord Bot:TypeError:无法读取属性';消息';未定义的,javascript,node.js,mongodb,discord,discord.js,Javascript,Node.js,Mongodb,Discord,Discord.js,我仍在学习discord.js,但我正在努力将discord message send函数从一个.js文件传递到另一个文件。下面我剥离了所有复杂的东西,只留下一些简单的东西,希望有人能理解它,并提供指导! 想法是,(最终)当'true'上有一个新的更新时,它会向所有discord服务器发送消息“hello world”。现在为了调试的目的,我使用我的开发者不协调频道。 一切都是通过nf run npm start运行的 Hello.js const Discord = require('disc

我仍在学习discord.js,但我正在努力将discord message send函数从一个.js文件传递到另一个文件。下面我剥离了所有复杂的东西,只留下一些简单的东西,希望有人能理解它,并提供指导! 想法是,(最终)当
'true'
上有一个新的更新时,它会向所有discord服务器发送消息“hello world”。现在为了调试的目的,我使用我的开发者不协调频道。 一切都是通过nf run npm start运行的

Hello.js

const Discord = require('discord.js');
const client = new Discord.Client();
const disconfig = require("./config/default.json");

// new function
function message(message) {
     const messageInfoEmbed = new Discord.RichEmbed()
        .addField('Hey:')
        .addField('Testing: ')
       .addField('NoWorries: ')

    return messageInfoEmbed
}

// Function OnUpdate() {
// if (updatedcontent === true) {


exports.wrapper = async(client, message) => {
client.channels.get("519344197078220804").send(message(message));

}
//}
//}
const Discord = require('discord.js')
const client = new Discord.Client()
const disconfig = require("./config/default.json");

client.on("ready", () => {
client.user.setActivity(`Serving ${client.guilds.size} servers`);
var sayHello = require('./hello');
sayHello.wrapper(); // "Hello World! Message via Discord"
});
client.on("message", async(message) => {
        if (message.author.bot) return;
        if (message.content.indexOf(disconfig.prefix) !== 0) return;
        const args = 
          message.content.slice(disconfig.prefix.length).trim().split(/ +/g);
        const command = args.shift().toLowerCase();

        if (command === "test?") {


        }
}
client.login(disconfig.token);
Server.js

const Discord = require('discord.js');
const client = new Discord.Client();
const disconfig = require("./config/default.json");

// new function
function message(message) {
     const messageInfoEmbed = new Discord.RichEmbed()
        .addField('Hey:')
        .addField('Testing: ')
       .addField('NoWorries: ')

    return messageInfoEmbed
}

// Function OnUpdate() {
// if (updatedcontent === true) {


exports.wrapper = async(client, message) => {
client.channels.get("519344197078220804").send(message(message));

}
//}
//}
const Discord = require('discord.js')
const client = new Discord.Client()
const disconfig = require("./config/default.json");

client.on("ready", () => {
client.user.setActivity(`Serving ${client.guilds.size} servers`);
var sayHello = require('./hello');
sayHello.wrapper(); // "Hello World! Message via Discord"
});
client.on("message", async(message) => {
        if (message.author.bot) return;
        if (message.content.indexOf(disconfig.prefix) !== 0) return;
        const args = 
          message.content.slice(disconfig.prefix.length).trim().split(/ +/g);
        const command = args.shift().toLowerCase();

        if (command === "test?") {


        }
}
client.login(disconfig.token);
错误

UnhandledPromisejectionWarning:TypeError:无法读取未定义的属性“channels”
在Object.exports.wrapper(X:\xxx\xxx\xxx\app\hello.js:20:8)

中的JavaScript(以及几乎所有其他编程语言)内部作用域中的变量声明在外部作用域中使用相同名称的阴影(想想覆盖)声明:

var foo = 3;
var bar = 5;
var f = (foo) => {
  var bar = 1;
  return [foo, bar];
};

var results = f(0);
console.log(results); // [0, 1]
注意:你没有得到
[3,5]
。因此,在您的代码中:

exports.wrapper = async(client, message) => { 
表示函数希望传入客户端。该参数声明隐藏了在文件顶部定义的客户端(这意味着它在函数中不可见)。所以当你在另一个文件中调用它时

sayHello.wrapper(); 

在没有参数的情况下,kaboom.

使用
message.guild
。它应该可以工作。

对函数及其参数使用相同的名称会导致错误这是一个很好的调用!谢谢。。仍然不能解决最初的问题,但是非常有助于我记住你到底得到了哪行错误?hi@t.Dirks我去了,并在底部添加了错误。基本上,hello.js中的通道是未定义的,我无法理解为什么在运行start时,它是server.js
exports.wrapper=async(client,message)=>{
意味着函数希望传入
client
。该参数声明隐藏了文件顶部定义的
client
(这意味着它在函数中是不可见的)。因此,当您在另一个文件中调用它时,如So
sayHello.wrapper();
不带参数,kaboom。