2017-02-20 72 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) 

是否有人知道我做錯了什麼?

,即時通訊在控制檯期望的輸出是:

3 

感謝

回答

1

您需要通過傳遞consolescopeeval。例如:

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

輸出:

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

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

當叫

2 
+0

這工作!謝謝!! :) – Malvrok

+0

沒問題!! :) – dan