我们有一个节点项目,它不需要来自相对路径的我们自己的子模块,而是需要将NODE_PATH
环境变量设置为lib
来查找所有子模块。
我想在程序源代码中处理这个标准情况,但现在似乎不可能。
我发现了几种解决方案都无法按预期工作。
module.paths.push("./lib");
在另一篇stackoverflow文章中建议但这会在较新的Node版本中导致错误消息,并引导开发人员使用NODE_PATH
。
相反,我尝试将以下内容作为我程序的第一行。
process.env['NODE_PATH']="./lib";
这不会导致错误消息,但它也不起作用。我认为这个变量是在应用程序启动时读取的,而不是在需要时读取。
答案 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/
下有所需的模块,那么它将被正确选取。
您拥有什么节点版本和系统?