我在数据库中有代码,其中包含不同的节点模块。像这样:
exports.hello = hello
通常情况下,我会使用hello = require './hello.js'
。但是,由于代码存储在db中,我不能包含该文件的路径。当我尝试做的时候
eval unescape hello_from_db_code
不起作用。
有没有办法在没有文件路径的情况下获得require
功能?
答案 0 :(得分:1)
如果“不起作用”是“模块未导出且存在未定义的全局变量”,那么您可以尝试在上下文中使用缺少的引用进行评估:
vm = require 'vm'
requireFromString = (str, filename) ->
sandbox =
module:
exports: {}
require: require
__filename: filename
vm.runInNewContext(src, sandbox, filename)
sandbox.module.exports
您可能希望添加对沙箱的额外引用,请查看module.js中的Module.prototype._compile
函数。您也可以直接以hello = module._compile(hello_from_db_code)
答案 1 :(得分:1)