異なるノード モジュールを含むデータベースにコードがあります。このような:
exports.hello = hello
通常、私はただ使用しますhello = require './hello.js'
。ただし、コードはデータベースに保存されるため、ファイルへのパスを含めることはできません。私がしようとするとき
eval unescape hello_from_db_code
動作しません。
require
ファイルへのパスを持たずに機能を取得する方法はありますか?
異なるノード モジュールを含むデータベースにコードがあります。このような:
exports.hello = hello
通常、私はただ使用しますhello = require './hello.js'
。ただし、コードはデータベースに保存されるため、ファイルへのパスを含めることはできません。私がしようとするとき
eval unescape hello_from_db_code
動作しません。
require
ファイルへのパスを持たずに機能を取得する方法はありますか?
「機能しない」が「モジュールがエクスポートされておらず、未定義のグローバルが存在する」である場合は、コンテキストで参照が欠落している状態で eval を試みることができます。
vm = require 'vm'
requireFromString = (str, filename) ->
sandbox =
module:
exports: {}
require: require
__filename: filename
vm.runInNewContext(src, sandbox, filename)
sandbox.module.exports
サンドボックスへの追加の参照を追加したい場合があります。module.jsModule.prototype._compile
の関数を見てください。また、次のように直接アクセスすることもできますhello = module._compile(hello_from_db_code)