将require的引用传递给runInContext时有什么区别?

时间:2017-03-18 16:37:34

标签: node.js

在vm模块的文档中,是Running an http server within a vm

的示例
'use strict';
const vm = require('vm');

let code =
`(function(require) {

   const http = require('http');

   http.createServer( (request, response) => {
     response.writeHead(200, {'Content-Type': 'text/plain'});
     response.end('Hello World\\n');
   }).listen(8124);

   console.log('Server running at http://127.0.0.1:8124/');
 })`;

 vm.runInThisContext(code)(require);

我想知道为什么要将require传递给上下文中的代码?有具体原因吗? 实际上,我在节点6.10中尝试了以下内容:

'use strict';
const vm = require('vm');

let code =
`(function() {

   const http = require('http');

   http.createServer( (request, response) => {
     response.writeHead(200, {'Content-Type': 'text/plain'});
     response.end('Hello World\\n');
   }).listen(8124);

   console.log('Server running at http://127.0.0.1:8124/');
 })`;

 vm.runInThisContext(code)(); 

它有效。修改会导致潜在的问题吗?

文档中还有一条说明,指出需求的共享参考可能会带来风险。根据我的理解,修改后的代码现在是安全的,正确的吗?

0 个答案:

没有答案