这是一个通用的体系结构/技术堆栈问题。
我想构建一个可以测试用户上传代码的Node JS应用。基本上,我会写测试用例,然后做一个前端,使用户可以编写自己的JS代码并将其“提交”到Node服务器,Node Server会对它进行测试并将结果返回给用户。>
基本上与HackerRank相同。
我知道这个问题很广泛,但是我不知道如何实现它-我假设有一个允许这样做的包或库,但是我不知道它叫什么或如何找到它一件事。
答案 0 :(得分:0)
您需要使用ExpressJS构建REST服务器,以将文件上传到服务器。然后派生一个节点进程来运行文件。然后使用<button onclick="newToast()">Make toast</button>
<button onclick="removeToast()">Burn toast</button>
<div id="toaster">
<div class="toast">1</div>
<div class="toast">2</div>
<div class="toast">3</div>
</div>
将结果流回。
答案 1 :(得分:0)
我将把Jailed签出为应该能够完成您想要的内容的软件包,或者将其他存在的提供适当安全措施的软件包签出。我会非常怀疑这种方法,该方法可以运行用户生成的任意代码而没有经过深入研究的保护措施,因为该代码可能会危害您的服务器。
您可能还想考虑在客户端而不是服务器上运行用户提交的代码,尽管这样做确实存在安全风险,但可以保护服务器免受恶意代码的侵害。入狱也支持这一点。
对于一般体系结构,要在服务器上运行,您应该让客户端通过Fetch API / AJAX将代码发布到服务器,通过Jailed或类似的代码运行代码,并将输出作为响应到POST。在客户端上运行应该更易于实现(尽管对于HackerRank之类的产品,您不希望信任客户是否通过测试的口号)。