当您在代码中创建新的 repl 实例时,它会自动访问全局范围内的任何内容。您可以修改 repl 上下文以在本地范围内公开一些自定义变量,以便 repl 可以访问它们,但我没有看到消除对全局范围的访问的简单方法。我希望我能给 repl 一个新的空白全局范围。
这是一个示例 repl 实例:
var repl = require('repl'),
msg = "Hello world!";
repl.start('> ').context.msg = msg;
在那个repl中,我输入了以下内容:
for (var key in global) {
console.log(key);
}
这导致了以下列表:
- 数组缓冲区
- 整数8数组
- Uint8Array
- Uint8ClampedArray
- Int16Array
- Uint16Array
- Int32Array
- Uint32Array
- Float32Array
- 浮点64数组
- 数据视图
- DTRACE_NET_SERVER_CONNECTION
- DTRACE_NET_STREAM_END
- DTRACE_NET_SOCKET_READ
- DTRACE_NET_SOCKET_WRITE
- DTRACE_HTTP_SERVER_REQUEST
- DTRACE_HTTP_SERVER_RESPONSE
- DTRACE_HTTP_CLIENT_REQUEST
- DTRACE_HTTP_CLIENT_RESPONSE
- COUNTER_NET_SERVER_CONNECTION
- COUNTER_NET_SERVER_CONNECTION_CLOSE
- COUNTER_HTTP_SERVER_REQUEST
- COUNTER_HTTP_SERVER_RESPONSE
- COUNTER_HTTP_CLIENT_REQUEST
- COUNTER_HTTP_CLIENT_RESPONSE
- 全球的
- 过程
- 全球的
- 根
- 缓冲
- 设置超时
- 设置间隔
- 清除超时
- 清除间隔
- 立即设置
- 清除立即
- 安慰
- 模块
- 要求
- 味精
- _
- 钥匙
你可以看到我们的msg
变量被添加在那里,这很好,但是有很多全局变量我不想暴露。我想公开一些危害较小的,例如setTimeout
,console
等,但绝对不是require
,process
等。有谁知道我如何在不产生全新子进程的情况下克服这个问题?