我希望允许我的站点(我的同事)的用户在Node.js服务器上创建和运行任意函数。该功能可以上传到服务器,在那里存储它,当某人访问该服务器上的URL时,它应该执行该功能。该功能无需在沙箱中检查或执行,代码应视为可信。我怎样才能实现这样的事情?我知道这是非常接近FaaS,但我不认为这是相同的......我还需要在服务器上请求运行一些预处理等在Node.js服务器中创建和运行动态功能
0
A
回答
1
如果你真正了解的一切后果,您可以使用表格eval
函数在服务器上运行以文本/字符串形式存储的代码。
请看这里 - https://nodejs.org/api/vm.html,例如,像指定的有:
实施例:一个VM
内运行的HTTP服务器当使用任一script.runInThisContext()
或vm.runInThisContext()
,代码的当前全球V8上下文中执行。传递给此VM上下文的代码将具有其自己的隔离范围。
为了使用http模块运行简单的Web服务器,传递给上下文的代码必须自己调用require('http')
,或者引用传递给它的http模块。例如:
'use strict';
const vm = require('vm');
const 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()
股与它从传递的上下文的状态。这可能会在不可信代码执行时带来风险,例如以不需要的方式改变上下文中的对象。
相关问题
- 1. 在动态创建的内容上运行jQuery功能
- 2. 动态创建Web服务动态Web服务调用器
- 3. 在观看功能之前运行服务器功能
- 4. 如何在Express服务器启动时运行某个功能?
- 5. 我正在创建静态node.js服务器
- 6. 在SQL服务器中动态构建和执行语句
- 7. 服务器控件动态创建CustomValidator
- 8. 在Eclipse中隐藏“在服务器上运行”功能
- 9. 创建动态WCF服务?
- 10. 只能从机器运行服务器访问Express Node.js服务器
- 11. 使用Node.js创建DDP服务器
- 12. 使用Node.js创建HTTPS服务器
- 13. 如何运行node.js服务器
- 14. 如何设置服务器运行Node.js?
- 15. 如何创建通过Firebase云端功能托管的Node.js代理服务器?
- 16. 创建一个简单的node.js静态服务器
- 17. 在Node.js中安全地执行用户创建的功能
- 18. MySQL:CONCAT_WS功能在本地运行但不在服务器上
- 19. 在运行时创建WCF服务
- 20. 在MS SQL服务器中动态创建存储过程2012
- 21. 基于服务器响应在Angular中创建动态表单
- 22. 在服务器控件中动态创建CustomValidator
- 23. 在linux中退出正在运行的Node.js服务器
- 24. 动态创建服务参考和使用服务
- 25. 创建一个服务来重复控制器中的功能
- 26. 自动化服务器不能创建对象 - 微软JScript运行时错误
- 27. 动态创建变量在运行时
- 28. 在运行时动态创建WPF ItemTemplate
- 29. 动态创建表(在运行时)
- 30. 在运行时创建动态类
感谢VM模块(我完全错过了!)和代码示例! –