2017-02-20 8 views
1

Im пытается отправить параметр через консоль узла и хочет выполнить его внутри функции eval.Как я могу оценить console.log (1 + 2) внутри eval()?

Что им письма в консоли заключается в следующем:

node main console.log(1+1) 

Файл main.js это:

var x = ""; 
process.argv.forEach(function (val, index, array) { 
    console.log(index + ': ' + val); 
    x = val; 
}); 

var eval = require('eval') 
eval("(" + x + ")"); 

И он бросает эту ошибку:

D:\Sandbox\jsdom>node main console.log(1+2) 
0: C:\Program Files\nodejs\node.exe 
1: D:\Sandbox\jsdom\main 
2: console.log(1+2) 

evalmachine.<anonymous>:1 
(console.log(1+2)) 
^ 
ReferenceError: console is not defined 
    at evalmachine.<anonymous>:1:2 
    at ContextifyScript.Script.runInContext (vm.js:35:29) 
    at ContextifyScript.Script.runInNewContext (vm.js:41:15) 
    at module.exports (D:\Sandbox\jsdom\node_modules\eval\eval.js:69:12) 
    at Object.<anonymous> (D:\Sandbox\jsdom\main.js:11:1) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 

Кто-то знаете, что я делаю неправильно?

Вывод, что им ожидает в консоли:

3 

Благодаря

ответ

1

Вам нужно пройти consolescope до eval. Например:

var x = ""; 
process.argv.forEach(function (val, index, array) { 
    console.log(index + ': ' + val); 
    x = val; 
}); 

var eval = require('eval') 
eval(x, null, 'console'); 

При вызове:

node app.js "console.log(1+1)" 

Выходы:

2 
+0

Это работало !! Благодаря!! :) – Malvrok

+0

Без проблем !! :) – dan

Смежные вопросы