【发布时间】:2015-07-15 05:15:09
【问题描述】:
我需要能够在动态相对路径上使用 require() - 这意味着相对路径需要根据当前环境而改变。
这种情况的最佳做法是什么?
我想到了这样的事情:
var module = require(process.env.MY_MODULES_PATH + '/my-module');
但是环境变量不是很方便。
还有其他可能性吗?
- 也许使用 package.json 安装后脚本为我设置环境变量?
- 也许节点中有一个我不知道的内置解决方案?
编辑
我刚刚意识到这是require()“嘲笑”的特例。例如,对于如何模拟 require() 进行单元测试,是否有最佳实践?
【问题讨论】:
-
无论如何你都应该使用
path.join()。 -
模块是否总是相对于当前路径?例如,您可以使用
require('../../some/directory/my-module');向上两个目录并返回some/directory/my-module。 -
环境变量到底有什么不方便的地方?只是正确设置它们是个问题吗?
-
这很不方便,因为它是我的代码外部的东西,可以随时更改。例如,我更喜欢配置文件 - 它们更加明显和直观
-
@Randy - 不,我需要能够路由到每个 env 上的不同路径,无论当前路径如何。