防止相对需要来自特定文件夹中的模块的调用

时间:2013-09-24 15:32:10

标签: javascript node.js

这听起来很奇怪,但我希望特定目录中的所有模块只能从node_modules中获取资源,而不是来自应用程序的任何其他部分。

在特定目录中:

  • require('fs') - 应该工作
  • require('../../something') - 拒绝
  • require('./another') - 拒绝

在Node中可以远程实现这样的东西吗?

1 个答案:

答案 0 :(得分:0)

你可以创建一个像需求代理一样的模块:

module.exports.require2 = function() {
    if (arguments[0][0] !== '.') {
        return require.apply(this, arguments);
    } else {
        throw new Error('Can\'t require relative modules');
    }
}

当然,这将由开发人员选择加入:

var require2 = require('require2');
var fs = require2('fs'); //everything's good
var fss = require2('./fss'); //throws an error

与thlorenz的proxyquire有类似的想法。