我想做这样的事情:
var jsonFileName = aDynamicallyGeneratedJsonFileName(),
defaultObject = {'my': 'default', 'json': 'object'};
var cachedOrRequiredObject = require(jsonFileName, defaultObject);
如果不存在,我希望cachedOrRequiredObject
得到,并且defaultObject
即使jsonFileName
不存在,我也希望 require 缓存作为jsonFileName
键保留。defaultObject
jsonFileName
当然这不起作用——尤其是在找不到文件时需要错误。我可以做类似的事情:
function myRequire (file, defaultObj) {
try {
return require(file);
catch () {
return defaultObj;
}
}
但是每次执行require
都会访问文件系统以尝试查找file
它何时不存在。除了复制 require 的功能和维护我自己的缓存之外,我有没有更好的方法来做到这一点?