Node.js 动态相对 require 路径

Mal*_*lki 5 require node.js

我需要能够在动态相对路径上使用 require() - 这意味着相对路径需要根据当前环境进行更改。

对于这种情况,最佳做法是什么?

我想到了这样的事情:

var module = require(process.env.MY_MODULES_PATH + '/my-module');
Run Code Online (Sandbox Code Playgroud)

但是环境变量不是很方便。

还有其他的可能性吗?

  • 也许使用 package.json 安装后脚本为我设置环境变量?
  • 也许节点中有一个我不知道的内置解决方案?

编辑

require()我才意识到这是“嘲笑”的一个特例。require()例如,是否有关于如何模拟单元测试的最佳实践?

Ran*_*ndy 1

模拟Require.js

var path = require('path');

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

module.exports = MockedRequire;
Run Code Online (Sandbox Code Playgroud)

使用:

var mymodule = require('./MockedRequire.js')('mymodule');
Run Code Online (Sandbox Code Playgroud)

老实说,我还没有实际测试过这个,但它应该可以正常工作。