nodejs - 使用什么而不是require.paths?

时间:2011-02-27 04:15:26

标签: node.js

最近node docs说修改require.paths是不好的做法。我该怎么做呢?

4 个答案:

答案 0 :(得分:5)

我相信关注的是它可以在运行时重复修改,而不仅仅是设置。这显然可能令人困惑,并导致一些非常奇怪的错误。此外,如果单个包修改了结果全局应用的路径,这非常糟糕,并且违背了节点的模块化特性。

如果您有多个自己的库路径,最佳解决方案是在启动节点之前设置NODE_PATH环境变量。 Node然后在启动时选择它并自动应用它。

答案 1 :(得分:1)

我将相关模型保存在同一目录或子目录中并使用以下方法加载:

var x = require('./mod/x');

如果它是外部模块,我使用npm安装它,将模块正确放入NODE_PATH。

我从未改变过require.paths。

答案 2 :(得分:1)

看看https://github.com/patrick-steele-idem/app-module-path-node;您可以将目录添加到顶级中的require语句,而不会影响子模块的路径。

答案 3 :(得分:0)

除非我在理解上犯了一个错误,否则当前系统的主要局限性在于,对于命名空间,您将无法使用非分层依赖项的文件夹。

这在实践中意味着什么...

请考虑您拥有x / y / z和a / b以及a / b / c。如果a / b和a / b / c都依赖于z / y / z,则您最终不得不相对地指定(分别为require('../../x/y/z')require('../../../x/y/z')),或者必须将每个单独的包都设置为node_module 。否则,您可能会使用符号链接或类似链接来做恐怖的事情。

据我所知,唯一的选择是,而不是使用文件夹来命名空间和组织,而使用诸如以下的文件名:

  • a.b.js
  • a.b.c.js
  • x.y.z.js