Github repo for reproducing problem 运行localhost:3000以触发问题。
我正在使用Meteor 1.4.4.1服务器端的node-celery
npm软件包。当Meteor启动时,客户端会自动调用Meteor方法estimates.request
,该方法会触发服务器将任务编入队列:
的客户机/ main.js
Meteor.startup(() => {
Meteor.call('estimates.request', function(err) {
console.log('ok')
})
});
触发Meteor方法:
进口/ API / Estimates.js
Meteor.methods({
'estimates.request'() {
console.log('estimates.request called');
// Create Celery client
var celery = require('node-celery')
var client = celery.createClient({
CELERY_BROKER_URL: 'amqp://192.168.1.26:5672//',
CELERY_RESULT_BACKEND: 'amqp'
});
// Queue task on connect
client.on('connect', function() {
console.log('connected');
start_latitude = 1.3053947
start_longitude = 103.8273045
client.call('proj.tasks.getPriceEstimates', [start_latitude, start_longitude],
function(result) {
console.log('result: ', result);
client.end();
})
});
}
});
发生以下错误:
Exception while invoking method 'estimates.request' TypeError: Cannot read property 'slice' of null
问题:导致此错误的原因是什么?
Github repo for reproducing problem 运行localhost:3000以触发问题。
答案 0 :(得分:0)
我遇到了同样的问题,节点芹菜文档中出现了错误。选项CELERY_RESULT_BACKEND输入错误。
您应该像这样设置此选项:
CELERY_RESULT_BACKEND: 'amqp://'
它应该有用。
Celery读取一个url并对协议进行切片,所以如果你通过amqp
芹菜会抛出异常。