2013-02-28 60 views
0

我存储在我的数据库的功能,并从与的node.js意外令牌)节点JS的eval一个functtion

数据库中检索它,当我console.log包含该函数是这样的输出

(function(settings){var options = {host: 'somehost.com',path: 'some/path/' + settings.token + '?mobile=' + settings.number + '&message=' + settings.message};callback = (function(response) {var str = '';response.on('data', (function (chunk) {str += chunk;}));response.on('end', (function() {settings.result(str);})));}settings.httpRequest.request(options, callback).end();}) 

当我console.logtypeof列它打印出string

但是当我做

var func = eval(column); 

结果Unexpected token)

有谁知道为什么?

我已经作出了更小的功能现在:

function(settings){var options = {host: 'api.smsmonster.co.za',path: '/uv1.svc/SendSMS/' + settings.token + '?mobile=' + settings.number + '&message=' + settings.message}settings.httpRequest.request(options, settings.callback).end();} 
+0

忘了一点尝试去掉括号围绕函数声明。 – 2013-02-28 15:18:50

回答

2
(
function(settings){ 
var options = 
    { 
    host: 'somehost.com', 
    path: 'some/path/' + settings.token + '?mobile=' + settings.number + '&message=' +  settings.message 
    }; 
callback = (function(response) { 
    var str = ''; 
    response.on('data', (function (chunk) { 
    str += chunk; 
    }) 
); 
response.on('end', (function() { 
    settings.result(str); 
    }) 
) 
/*{!here}*/); 
} //<-- this is your problem it need to go to:{!} 
settings.httpRequest.request(options, callback).end(); 
}) 
1

你有没有考虑过的可能性,有可能是外来的或错位右括号? 这是当你喂什么包括什么Node.js的输出,在你的问题

chunk;}));response.on('end', (function() {settings.result(str);})));}setting 
                    ^
SyntaxError: Unexpected token) 
    at Module._compile (module.js:437:25) 
    at Object.Module._extensions..js (module.js:467:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.runMain (module.js:492:10) 
    at process.startup.processNextTick.process._tickCallback (node.js:244:9) 
1

你的JSON可能有问题。你应该使用多行写:

function(settings){ 
    var options = { 
    host : 'api.smsmonster.co.za', 
    path : '/uv1.svc/SendSMS/' 
      + settings.token 
      + '?mobile=' + settings.number 
      + '&message=' + settings.message 
    }settings.httpRequest.request(options, settings.callback).end(); 
} 

正如你可以看到现在,这里有一个问题:

}settings.httpRequest.request(options, settings.callback).end(); 

你可能之前的“设置”