2017-02-20 11 views
1

ノードコンソール経由でパラメータを送信しようとしていて、eval関数の中でそれを実行したい。eval()の内部でconsole.log(1 + 2)を評価するにはどうすればよいですか?

コンソールで何イム書き込みがこれです:

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) 

は誰かがい何が間違っているのか知っていますか?

コンソールに期待イム出力は、次のとおりです。あなたがevalに至るconsolescopeを渡す必要が

3 

おかげ

答えて

1

。たとえば、次のように

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

関連する問題