控制台显示错误出现在use.cpp
中。我正在尝试从另一个文件中导出货币命令代码,并将其导入此处,只是看起来更好一点。
错误:#include "my.h"
int foo = 7;
int main(int argc, char *argv[]) {
print_foo();
print(99);
return 0;
}
index.js
Unhandled Rejection at: TypeError: Cannot read property 'execute' of undefined
如果任何人都可以看到问题(很抱歉,很明显!)并帮助我,将不胜感激!谢谢。
答案 0 :(得分:0)
要使代码正常工作,client.commands
必须是包含在coin.js
中创建的导入数组的对象。
.get
必须是client.commands
对象上的函数,该函数必须返回coin.js数组中的所需对象。
要等待execute
的输出,它必须在异步函数中执行(除非您使用的是最新的JS)。您还应该在try/catch
块中执行它,这将消除“未处理的拒绝”错误。
// index.js
const coins = require('./coin.js')
const client = {
commands: {
cmds: [...coins],
get(cmd) {
return commands.cmds.filter(item => item.name === cmd)
}
}
}
const doThing = async () => {
try {
switch (cmd) {
case 'coinflip':
await client.commands.get('coinflip').execute(msg, args)
break
}
} catch (err) {
console.error(err)
}
}
;(async () => {
const cmd = 'coinflip'
await doThing(cmd)
})()
// coins.js
module.exports = [
{
name: "coinflip",
async execute(message, args) {
//coinflip code here
}
}
]
这似乎有点过分,可以简化为:
// index.js
const coinflip = require('./coin.js')
const client = {
commands: {
coinflip
}
}
const doThing = async cmd => {
try {
await client.commands[cmd].execute(msg, args)
} catch (err) {
console.error(err)
}
}
;(async () => {
const cmd = 'coinflip'
await doThing(cmd)
})()
// coins.js
module.exports = {
async execute(message, args) {
//coinflip code here
}
}