Node.jsdynamic相对需要path

我需要能够在dynamic相对path上使用require(),这意味着相对path需要根据当前环境进行更改。

这种情况的最佳做法是什么?

我想到了这样的事情:

var module = require(process.env.MY_MODULES_PATH + '/my-module'); 

但是环境variables不是很方便。

还有其他的可能吗?

  • 也许使用package.json post-install脚本为我设置环境variables?
  • 也许有一个内置的解决scheme,我不知道节点?

编辑

我刚刚意识到,这是一个特殊情况的require() “嘲笑”。 是否有一个最佳做法,例如如何模拟unit testingrequire()

MockedRequire.js

 var path = require('path'); function MockedRequire(module) { return require(path.join('/path/to/modules', module)); } module.exports = MockedRequire; 

使用:

 var mymodule = require('./MockedRequire.js')('mymodule'); 

说实话我没有真正的testing过,但它应该没有问题。

我会build议使用configuration加载器。 它将根据您的NODE_ENVvariablesselect您的path,但是它比您build议的要干净得多,因为您将所有特定于环境的configuration都保存在一个外部文件中。

例子: