我有以下代码,并且它给了我以下错误。
TypeError: Cannot read property 'assertQueue' of undefined
at /var/www/myapp/dashboard/routes.js:195:39
at /var/www/myapp/node_modules/amqplib/lib/callback_model.js:46:16
at /var/www/myapp/node_modules/amqplib/lib/callback_model.js:61:10
at /var/www/myapp/node_modules/amqplib/lib/callback_model.js:74:5
如果我注释掉conn.close(),并且代码工作正常,我认为代码试图在执行ch.assertQueue之前过早关闭conn。解决此问题的最佳方法是什么?
amqp.connect('amqp://localhost', function(err, conn) {
conn.createChannel(function(err, ch) {
var q = 'blast_queue';
var msg = blast.id;
ch.assertQueue(q, {durable: true});
ch.sendToQueue(q, new Buffer(msg), {persistent: true});
console.log(" [x] Sent '%s'", msg);
});
conn.close();
});
答案 0 :(得分:1)
这是因为连接关闭在find /media/pi/88DC-E668/MP3/ -name \*.mp3 |
while read f; do
omxplayer "$f"
done
中的回调函数执行之前发生。
要修复它,请在回调函数内移动关闭连接的行:
conn.createChannel
答案 1 :(得分:1)
这对我有用:
发件人:
amqp.connect('amqp://localhost', function(err, conn) {
收件人:
amqp.connect({ protocol: 'amqp', hostname: 'localhost', port: 5672, username: 'xxx', password: 'xxx', vhost: '/' }, function(err, conn) {