如何在 eval() 中计算 console.log(1+2)?
How can I evaluate console.log(1+2) inside eval()?
我正在尝试通过节点控制台发送参数并希望在 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
谢谢
您需要将 console
scope
传递给 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
我正在尝试通过节点控制台发送参数并希望在 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
谢谢
您需要将 console
scope
传递给 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