最近node docs说修改require.paths
是不好的做法。我该怎么做呢?
答案 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 。否则,您可能会使用符号链接或类似链接来做恐怖的事情。
据我所知,唯一的选择是,而不是使用文件夹来命名空间和组织,而使用诸如以下的文件名: