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都保存在一个外部文件中。
例子: