我们有一个节点项目,它不需要来自相对路径的我们自己的子模块,而是需要将NODE_PATH
环境变量设置lib
为查找所有子模块.
我想在程序源代码中处理这个标准情况,但现在看来它是不可能的.
我找到了几个解决方案都没有按预期工作.
module.paths.push("./lib");
在另一个stackoverflow文章中建议但这会在较新的Node版本中导致错误消息并引导开发人员使用NODE_PATH
.
相反,我尝试将以下内容作为我程序的第一行.
process.env['NODE_PATH']="./lib";
这不会导致错误消息,但它也不起作用.我认为这个变量是在应用程序启动时读取的,而不是在需要时读取.
ten*_*its 11
您可以从源代码中找到所有信息:module.js
... NODE_PATH
仅在访问via时抛出错误require.paths
.
搜索_nodeModulePaths
功能:模块实例具有通用的Array对象paths
,其中包含所有查找路径.
module.paths.unshift('./foo-baz');
var x = require('some-lib-name');
console.log(x);
Run Code Online (Sandbox Code Playgroud)
所以现在,如果您拥有所需的模块,./foo-baz/some-lib-name/
那么它将被正确地拾取.
你有什么节点版本和系统?