在NodeJS应用程序中设置NODE_PATH

时间:2014-07-25 10:12:29

标签: node.js

我们有一个节点项目,它不需要来自相对路径的我们自己的子模块,而是需要将NODE_PATH环境变量设置为lib来查找所有子模块。

我想在程序源代码中处理这个标准情况,但现在似乎不可能。

我发现了几种解决方案都无法按预期工作。

module.paths.push("./lib");

在另一篇stackoverflow文章中建议但这会在较新的Node版本中导致错误消息,并引导开发人员使用NODE_PATH

相反,我尝试将以下内容作为我程序的第一行。

process.env['NODE_PATH']="./lib";

这不会导致错误消息,但它也不起作用。我认为这个变量是在应用程序启动时读取的,而不是在需要时读取。

1 个答案:

答案 0 :(得分:11)

您可以从来源找到所有信息:module.js

仅在通过... NODE_PATH访问时才会抛出

require.paths错误。

搜索_nodeModulePaths函数:模块实例具有通用数组对象paths,其中包含所有查找路径。

module.paths.unshift('./foo-baz');
var x = require('some-lib-name');
console.log(x);

现在,如果您在./foo-baz/some-lib-name/下有所需的模块,那么它将被正确选取。

您拥有什么节点版本和系统?