这听起来很奇怪,但我希望特定目录中的所有模块只能从node_modules中获取资源,而不是来自应用程序的任何其他部分。
在特定目录中:
require('fs')
- 应该工作require('../../something')
- 拒绝require('./another')
- 拒绝在Node中可以远程实现这样的东西吗?
答案 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有类似的想法。