【发布时间】:2016-10-25 08:28:45
【问题描述】:
我正在编写自己的自定义 node.js 服务器。它现在处理静态页面、AJAX GET、POST 和 OPTIONS 请求(后者用于 CORS),但我知道我为运行服务器端 GET 和 POST 脚本选择的方法不是最佳的 - 官方 node.js文档指出,启动大量子 node.js 进程是一个坏主意,因为它是一种资源匮乏的方法。它有效,但我知道可能有更好的方法来实现相同的结果。
所以,我选择了 VM 模块。我的第一个想法是,这将解决机器与子进程混乱的问题,并使我的服务器更具可扩展性。
有一个小问题。我的服务器端脚本,用于目录列表和将结果发送回浏览器等任务,从几个 require 语句开始加载所需的模块。
终于编写了读取脚本文件的代码,并将其传递给 vm.Script(),我现在遇到了一个错误:
"ReferenceError: require 不是函数"
我后来了解到,这样做的原因是 VM 为脚本启动了一个裸 V8 执行环境,而不是一个独立的 node.js 执行环境。为了实现我的想法,我需要 VM 为我提供一个单独的沙盒 node.js 执行环境。我如何做到这一点?
我的初步研究告诉我,我需要为 VM 执行环境提供其自己的 node.js 全局变量的单独副本,以便 require 按预期运行。我刚才提供的理解是否正确?如果是这样,我需要采取哪些步骤来执行此任务?
【问题讨论】:
标签: node.js virtual-machine require