需要,当模块不存在时如何进行回退

时间:2018-01-02 17:33:50

标签: javascript require

我有一个应用程序,我需要一个可能可用或不可用的文件。如果文件不可用,我需要检查另一个文件。第三个选项是默认选项。到目前为止我有这个

const file = require('./locales/${test1}') || require('./locales/${test2}') || require('./locales/default')

但是它给了我一个错误,说无法找到模块。我该如何做到最佳?

我确实尝试过https://www.npmjs.com/package/node-require-fallback但是,尽管我的节点版本没问题,但它似乎无法正常工作

const messages = require('./ locales / $ {test1}')运行良好,但

const messages = requireIfExists('。/ locales / $ {test1}','。/ locales / $ {test2}')FAILS

2 个答案:

答案 0 :(得分:0)

在普通节点应用中,您可以使用try-catch块:

var module;

try {
  module = require(`./locales/${test1}`);

  } catch(error) {
    // Do something as a fallback. For example:

    module = require('./locales/default');
  }
}

答案 1 :(得分:0)

使用try / except,您可以实现自己复制requireIfExists的功能。

function requireIfExists(...modules) {
  for (let module of modules) {
    try {
      return require(module);
    } catch (error) {
      // pass and try next file
    }
  }
  throw('None of the provided modules exist.')
}

另外,请确保在使用模板字符串时使用`字符而不是引号。