如何在Node.js Web应用程序中运行用户代码?

如何在Node.js Web应用程序中运行用户代码?

问题描述:

我甚至不知道该怎么称呼它!如何在Node.js Web应用程序中运行用户代码?

我只是想为桌面RPG创建一个平台(只是为了好玩和知识),当我的用户可以自动化滚动,角色表等等。我受到MapTools和Roll20的Macro系统以及RPGMaker脚本系统的启发。

但我不知道如何让我的节点应用程序读取用户发送的文本,阅读并保存以备后用。我认为使用JavaScript,Python或Lua作为用户的语言。任何人都可以指出我的方向?

+0

你是通过读取用户输入作为字符串,然后使用eval运行它在节点中做到这一点。只要小心,因为用户可以做一些严重的损害,所以运行任何代码而不先验证是不好的做法。 –

+0

节点的['vm'模块](https://nodejs.org/dist/latest-v7.x/docs/api/vm.html)可以帮助Hattan的建议。用它来代替'eval()'。 –

好,而EVAL和VM模块都是有帮助在这里,我倾向于认为大约产生一个新的节点工艺与用户文件作为参数,原因有二:

  1. 提供用户之间的最大隔离代码和服务器代码。
  2. 以更逼真的方式模拟用户的代码执行。