【问题标题】:TypeError: Cannot read property 'split' of undefined in discord and nodejsTypeError:无法读取不和谐和nodejs中未定义的属性“拆分”
【发布时间】:2021-04-21 18:03:49
【问题描述】:

这是错误

let token = msg.content.split(' ');
                          ^

TypeError: Cannot read property 'split' of undefined
    at Client.msg (/app/bot.js:15:27)
    at Client.emit (events.js:196:13)
    at MessageCreateAction.handle (/rbd/pnpm-volume/3c4dae99-ae7d-482d-8189-d37183b015d2/node_modules/.registry.npmjs.org/discord.js/12.5.1/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (/rbd/pnpm-volume/3c4dae99-ae7d-482d-8189-d37183b015d2/node_modules/.registry.npmjs.org/discord.js/12.5.1/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (/rbd/pnpm-volume/3c4dae99-ae7d-482d-8189-d37183b015d2/node_modules/.registry.npmjs.org/discord.js/12.5.1/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (/rbd/pnpm-volume/3c4dae99-ae7d-482d-8189-d37183b015d2/node_modules/.registry.npmjs.org/discord.js/12.5.1/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (/rbd/pnpm-volume/3c4dae99-ae7d-482d-8189-d37183b015d2/node_modules/.registry.npmjs.org/discord.js/12.5.1/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
    at WebSocket.onMessage (/rbd/pnpm-volume/3c4dae99-ae7d-482d-8189-d37183b015d2/node_modules/.registry.npmjs.org/ws/7.4.2/node_modules/ws/lib/event-target.js:132:16)
    at WebSocket.emit (events.js:196:13)
    at Receiver.receiverOnMessage (/rbd/pnpm-volume/3c4dae99-ae7d-482d-8189-d37183b015d2/node_modules/.registry.npmjs.org/ws/7.4.2/node_modules/ws/lib/websocket.js:825:20)

这是代码

console.log("loding");
const Discord = require("discord.js");
const client = new Discord.Client();

client.login(process.env.SECRET);

client.on("ready", () => {
  console.log(`Logged in as ${client.user.tag}!`);
});

client.on("message", msg);

    function msg() {

这一行给出错误

let token = msg.content.split(' ');

  if ((msg.channel.id = "791583092275937303")) {
    if (token[0] === "ping") {
      msg.reply("Pong!");
    } else if (token[0] === "!gif") {
      msg.reply("ok wait");
     
      
      
      
      
      

我已经删掉了

      let APIKEY = "**************";
      let limit = "100";
      let search= 'ok';
      let rating = 'g'
      if (token.length > 1){
        search.slice(1,search.length).join(" ");
      }
      
      const gifForm = document.querySelector("#gif-form");
      gifForm.addEventListener("submit", fetchGiphs);

      function fetchGiphs(e) {
        e.preventDefault();

这会获取 giphy gif

        fetch(
          `https://api.giphy.com/v1/gifs/search?&q=${search}&limit=${limit}&api_key=${APIKEY}&rating=${rating}`
        )
          .then(response => {
            return response.json();
          })
          .then(resp => {

// 这里我们从响应对象中获取数据数组

let dataArray = resp.data;
            console.log(dataArray);
            msg.channel.send()
})        

// 我们将数组传递给 showGiphs 函数

//我们使用catch方法进行错误处理

 .catch(err => console.log(err)); 
      }
    }
  }
}

【问题讨论】:

  • 如果错误提示“无法读取未定义的属性anyProperty”,则表示您要求的属性值未定义。因此,在这种情况下,Array.split() 已定义,但您调用它的值是 nullundefined,或者不是数组。希望这会有所帮助!
  • 不,它说拆分不能完成
  • "TypeError: Cannot read property 'split' of undefined" 基本上意味着“.split() 被调用的值没有.split() 方法”我没有阅读你的代码,但是除非您尝试运行不是Array.split 的方法,否则这应该是准确的。您在标题中输入的类型错误表明我的想法是正确的,但可能您输入了错误的标题,它与您的代码无关。

标签: javascript node.js discord discord.js giphy-api


【解决方案1】:

您正在尝试通过undefined 呼叫split

不要那样做。

首先,检查它是否存在。

let token;
if (msg && msg.content) {
  token = msg.content.split(" ");
}

或者使用更新的可选链。

let token = msg?.content?.split(' ');

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 2020-11-10
    • 2020-11-11
    • 2021-04-15
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多