这听起来很奇怪,但我希望特定目录中的所有模块只能从 node_modules 中获取资源,而不能从应用程序的任何其他部分获取资源。
在特定目录中:
require('fs')
- 应该管用require('../../something')
-- 拒绝require('./another')
-- 拒绝
在 Node 中,这样的事情远程可能吗?
这听起来很奇怪,但我希望特定目录中的所有模块只能从 node_modules 中获取资源,而不能从应用程序的任何其他部分获取资源。
在特定目录中:
require('fs')
- 应该管用require('../../something')
-- 拒绝require('./another')
-- 拒绝在 Node 中,这样的事情远程可能吗?
您可以制作一个像 require-proxy 一样的模块:
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的想法。