Tag: eval

expression式eval(“function(x){return x * x}”)打破了node.js控制台

当我在node.js控制台中input这样的东西时: var f = eval("function(x) { return x*x}"); 它不评估expression式,并等待我input其他内容。 为什么发生这种情况? 为什么我不能在这个之后input另一个expression式?

Node.JS vm.runInNewContext()vs require()和eval()

vm.runInNewContext是否像eval一样被认为是黑魔法? require和读取文件之间是否存在显着的性能差异,并使用vm来运行它,或者是相同的(如果你实现caching等,只是想添加一些variables的上下文)

如何在Node.js中安全地执行未知的Javascript代码?

我需要运行由未知来源validation或sorting的东西提供的代码。 如何在Node.js中安全地执行此操作? Python有RestrictedPython ,类似吗? 浏览器也有ADsafe ,但它可以在Node.js中使用吗?

Node.js全局评估,引发ReferenceError

我正在尝试从Rhino书籍学习JavaScript。 我试图从书中执行以下关于eval() 。 我正在使用node.js(v0.10.29)来执行示例。 var geval = eval; // aliasing eval to geval var x = 'global'; // two global variables var y = 'global'; function f () { var x = 'local'; // define a local variable eval('x += "changed";'); // direct eval sets the local variable return x; } function g () { […]

在Node中,如何在eval中需要文件?

我有两个文件test.js和x.js ,在同一个目录中: test.js : console.log(eval( "require('x.js')" )); x.js是空的。 预期 : require返回undefined ,所以没有logging。 实际 : node test.js给我Error: Cannot find module 'x.js' (为了简洁,省略了堆栈跟踪)。 情况听起来类似于这个其他问题 ,与我已经使用eval而不是new Function的差异,并require 被定义,只是意外地工作。 为什么是这样? 如何正确地require eval代码中的模块?

包括带有html和node.js的js文件

我正在通过运行在node.js上的HTML5客户端和服务器之间的websockets执行消息传递。 当然,我selectJSON作为消息格式,并创build了常见的JavaScript代码,定义了各种消息内容types和转换操作。 JavaScript代码在两个项目之间共享。 我创build了我的web客户端作为一个git项目,我的服务器作为另一个git项目。 部分原因是因为我正在使用phonegap为各种基于触摸的环境构build基于webkit的客户端。 这也是各种逻辑的一个很好的分离。 为了共享公共代码,我为公共逻辑创build了一个单独的项目,并使用git的子项目将代码“导入”其他两个项目。 现在这对基于html5的项目工作正常,因为我可以做以下包括代码: <script src="common/js/comms.js" type="text/javascript"></script> 然而,使用节点时,我试图获取代码时遇到了问题。 得到代码,我已经结束了以下操作: var fs = require('fs'); eval(fs.readFileSync('./common/js/comms.js').toString()); 虽然我采取的方法工作,我注意到,当我有依赖(如,我需要x.js,y.js和x.js,如果我想a.js),它开始变得非常混乱,我必须为每一个希望使用这些实体的node.js js文件做这件事。 我也不舒服使用eval方法。 我没有安全问题,虽然我想使用严格的模式,这是我的理解,eval和严格模式像油和水一起走到一起。 所以我的问题是什么是在HTML项目和node.js项目之间包含共享js文件的最佳方法? 我宁愿遵循严格的东西。 我应该注意的是,虽然围绕这个话题有几个问题,但我找不到解决我提出的具体问题的任何问题。 我还要补充一点,我不希望“服务”来自“服务器”的文件。 HTML5客户端将是“独立”的。 澄清一下,我在“常用js文件”中的内容如下: var Comms = function (options) { … } 在HTML5中,我可以直接引用new Comms() ,这也是我想要在node.js中做的事情。

用fs.readFileSync和eval内容读取文件…哪个范围有function? 如何访问?

我最近试图将文件导入到我现有的node.js项目中。 我知道这应该写一个模块,但我包括我的外部JavaScript文件是这样的: eval(fs.readFileSync('public/templates/simple.js')+'') simple.js的内容如下所示: if (typeof examples == 'undefined') { var examples = {}; } if (typeof examples.simple == 'undefined') { examples.simple = {}; } examples.simple.helloWorld = function(opt_data, opt_sb) { var output = opt_sb || new soy.StringBuilder(); output.append('Hello world!'); return opt_sb ? '' : output.toString(); }; (是的,谷歌封闭模板)。 我现在可以使用以下方式调用模板文件: examples.simple.helloWorld(); 一切都像预期一样工作。 然而,我无法弄清楚这些函数的范围是什么,我可以访问这个例子对象。 一切都运行在一个node.js 0.8服务器,就像我说的工作…我只是不知道为什么? 谢谢澄清。

node.js – 评估一个现场stream程

有没有人使用现有的node.js REPL为自己设置了这样的东西? 我没有想到一个快速的方法来做到这一点。 我今天做的方式是使用emacs和这个: https : //github.com/ivan4th/swank-js 该模块由以下部分组成: 一个SLIME-js插件到emacs,与js2-mode结合使用,你可以简单地在一个函数def的主体中的某个地方发出一个CMx,然后closures该函数的string到.. Swank-js服务器(是的,你可以从本地机器上直接调用远程进程)写在Node.js中 – 它接收你所评估函数的string, 整个部分可以让你使用BROWSER连接到该服务器上的另一个端口,然后让你在该浏览器上操作DOM(这是相当了不起但不相关) 我的解决scheme在emacs一侧使用SLIME-js,我需要('swank-js')在我的app.js文件 现在..我有几个问题和关于我的解决scheme或其他可能的问题: Q1:这是否过分了? 有人有一个秘密的方法来评估纳米到他的生活过程中的东西? Q2:我不得不改变swank-js的EVALing方式..它使用了这样的一种黑魔法: var Script = process.binding('evals').Script; var evalcx = Script.runInContext; …. this.context = Script.createContext(); for (var i in global) this.context[i] = global[i]; this.context.module = module; this.context.require = require; … r = evalcx("CODECODE", this.context, "repl"); 据我所知,它只是将全局variables复制到新的上下文中,并且在eval时不会更改原始函数定义 – SOOO ..我只是使用简单的“eval”和IT WORKS。 […]

Javascript eval()exception – 行号

在JavaScript中,我有一个var str = ".a long string that contains many lines…"在由eval(str);引起的exception的情况下eval(str); 我想赶上它,并打印导致exception的行号。 (str的内部线..) 可能吗? 编辑作为JavaScript的一个应用服务器的Alligator项目( http://github.com/mrohad/Alligator )的一部分,我正在从磁盘读取文件和eval()任何嵌套到scriplet(<??>) ) 我正在浏览器外部使用NodeJS(在V8之上)运行这个脚本。

安全沙盒并执行用户提交的JavaScript?

我希望能够让用户提交任意的JavaScript代码,然后将其发送到Node.JS服务器,并在将输出发送回多个客户端(如JSON)之前安全地执行。 eval函数让人想起,但我知道这有多个安全问题(用户提交的代码将能够访问节点的文件API等)。 我曾经看到过一些像Microsoft Web Sandbox和Google Caja这样的项目,它们允许执行清理标记和脚本(用于在网站上embedded第三方广告),但似乎这些是客户端工具,我不确定他们是否可以在Node中安全使用。 有没有一个标准的方法来沙盒和在Node中执行不可信的JavaScript,获得输出。 尝试和做这个服务器端是错误的吗? 编辑:用户能够充分利用JavaScript的全部function并不重要,事实上,能够挑选并select将提供给用户代码的API将是优选的。 编辑:我打算继续前进,并与我发现的更新。 这个Sandcastle模块( bcoe/sandcastle sandcastle)似乎旨在做我脑海中所想的事情。 不知道它是多么的安全,但是因为我不是那么重要,我想我会试试。 如果我能够成功地做到这一点,我会添加自己的答案。